更新一条数据的某个字段
UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';
相同条件下更新一个字段
UPDATE mytable SET myfield = 'value' WHERE id in (1,2,3);
连表更新
语法:
UPDATE table_references
SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
实例:
update test1,test2
set test1.name=test2.name,test1.age=test2.age
where test1.id=test2.id
子查询更新
update test1
set name=(select name from test2 where test2.id=test1.id),
age=(select age from test2 where test2.id=test1.id)
根据不同条件更新多条数据为不同的值
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)
这句sql的意思是,更新display_order
字段,如果id=1 则display_order
的值为3,如果id=2 则 display_order
的值为4,如果id=3 则 display_order
的值为5。
即是将条件语句写在了一起。
这里的where部分不影响代码的执行,但是会提高sql
执行的效率。确保sql
语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。
如果更新多个值的话,只需要稍加修改:
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3)
如果投入到业务中,就得写原生组装 SQL
,参数如果是前端返回的 记得先预加载过一遍防止sql
注入。