MySQL-5.7Update语句详解 2018/7/16
------------------------------------------------------------------------------
1.语法
(1)单表
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}assignment:col_name = value
assignment_list:assignment [, assignment] ...
Low_priortiy
修改语句等其他链接读此表操作结束后再执行用在myisam,memory和merge;
Ignore
修改语句违反唯一性约时,报警告信息;
(2)多表
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]
注意:
1)如果没有WHERE子句,则更新所有的行。
2)如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。
3)LIMIT子句用于给定一个限值,限制可以被更新的行的数目。
4)多表更新时ORDER BY和LIMIT不能被使用;
------------------------------------------------------------------------------
2.用法示例
updatestudents setname='Tom',age=46 where id=4; #< /FONT> 已存在数据修改
updatetb_1,tb_2 settb_1.name=tb_2.name,tb_1.age=tb_12.age where tb_1.id=tb_12sid;
updatestudents set name='Tom' limit2; #< /FONT> 表前2行被更改
updatet1 set col1=col1+1,col2=col1 #表达式
updatestudents setid=id+1; #< /FONT>(id字段唯一约束)错误
updatestudents set id=id+1 order by siddesc; #< /FONT> (id字段唯一约束)
多表修改
updateitems,month set items.price=month.price where items.id=month.id;
#使用来自另一个表的信息
updatetb_1 set age = tb_1.age + tb_2.age from tb_1, tb_2
wheretb_1.id = tb_2.id and tb_2.ord_date = (select max(tb_2.ord_date) from tb_2)
update tb_1 set remark = 'col is…' from (select top 10 * from tb_1 order byname) as t1
wheretb_1.id =t1.id #< /FONT> 前10个记录remark 列进行更新
------------------------------------------------------------------------------