UPDATE table_a SET name=(SELECT name FROM table_b WHERE id=1)WHERE id IN (SELECT id FROM table_c WHERE age > 24);
但是如果子查询和更新的表是同一个表的话,MySQL会报如下的错误:中涉及到的子查询要格外注意
Error Code : 1093You can't specify target table 'table_a' for update in FROM clause
我们平时更新数据时候常见的就有如下几种:
1、最简单的语句如下:
1、UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';2、UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values');
2、将同一个表中的一个字段的值复制给另一个字段,常见操作如下:
1、UPDATE t_user SET signed_time =create_time2、UPDATE table_a SET A=(SELECT B FROM (SELECT * FROM table_a) b WHERE b.id =table_a.id)3、update tbl_user_info_copy as aa, tbl_user_info_copy asbbset aa.userId =bb.idWHERE aa.id = bb.id;
3、将同一个表中两个类型一样的字段的值互换(有待完善)
UPDATEt_user u1, t_user u2SET u1.sig