Skip to content

MySQL UPDATE多条

发布时间:

示例1

js
UPDATE tableName SET
    column1 = CASE column2
        WHEN column1Value1 THEN column2Value1
        WHEN column1Value2 THEN column2Value2
        WHEN column1Value3 THEN column2Value3
    END,
    column3 = CASE column2
        WHEN column3Value1 THEN column2Value1
        WHEN column3Value2 THEN column2Value2
        WHEN column3Value3 THEN column2Value3
    END
WHERE column2 IN (column2Value1, column2Value2, column2Value3)   
   

示例2

js
UPDATE tableName SET
    display_order = CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
    END
WHERE id IN (1, 2, 3)   
   
  • 示例2 这句sql的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。
  • 需要注意这里的where部分代码,如果 display_order 是必填字段,且id不止1 2 3 有4,此时不加where id=4的记录中的display_order就会被更新空,由于display_order是必填此时就会报错:Column 'display_order ' cannot be null
  • 还有where会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。