(1)在使用更新update的過程中,我們可能會想要更新比如id段在某一個指定范圍內的數據,如果我們是想要更新前面多少行的數據的話可以直接:
UPDATE tb_name SET column_name='value' ORDER BY id ASC LIMIT 20;
比如我想要把下面的這個員工信息表的manager_id的信息進行更改,把員工id在109~113的員工更改為120,相當於一次人事調動。
(2)這樣就可以實現只更新前面20條數據,但是如果我們想要更新比如20到30這個id段的數據的話,不可以直接 LIMIT (20,30)這樣子來使用,所以可以考慮使用配合子查詢的方式:
UPDATE tb_name SET column_name = 'value' WHERE id in (SELECT id FROM (SELECT * FROM tb_name ORDER BY id ASC LIMIT 20,30) AS new_name);
在例子中我們就可以使用配合到子查詢的方式,select可以配合着Limit使用,而且9,5表示的是從第10行開始的五條數據,剛好對應的是109-113這五條數據:
UPDATE `employees` SET manager_id = 120 WHERE employee_id IN (SELECT employee_id FROM (SELECT * FROM `employees` ORDER BY employee_id ASC LIMIT 9,5) AS sub_employees);