解決針對MySQL中對於某一個區間段范圍的數據更新的情況


  (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);

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM