MySQL语法汇总2-update

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 列进行更新

------------------------------------------------------------------------------



猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/81064746