700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql 更新子表_mysql 在update中实现子查询的方式

mysql 更新子表_mysql 在update中实现子查询的方式

时间:2020-08-06 15:14:12

相关推荐

mysql 更新子表_mysql 在update中实现子查询的方式

当使用mysql条件更新时--最先让人想到的写法

UPDATEbuyerSETis_seller=1WHEREuidIN(SELECTuidFROMseller)

此语句是错误的,会报错You can't specify target table 'xxx' for update in FROM

这是因为:

mysql的update的一些特点

1、update 时,更新的表不能在set和where中用于子查询;

2、update 时,可以对多个表进行更新(sqlserver不行);

如:update ta a,tb b set a.Bid=b.id ,b.Aid=a.id;

3、update 后面可以做任意的查询,这个作用等同于from;

正确的方式是,例:

简单的更新:

UPDATE `roles_permissions` a SET a.roles_id=89 WHERE a.`roles_name`='0|||管理员'

较为复杂的更新:

例1:

UPDATE order_mall a,(SELECT order_mall.id FROM `order_mall`,`order_goods` WHERE order_mall.`id`=order_goods.`order_id` AND order_goods.order_status=8 AND order_goods.order_goods_type=3) b

SET a.`status`=4

WHERE a.id=b.id

例2:

UPDATE `core_user` a,(SELECT message_push_conf.user_id,message_push_conf.`open_push` FROM `message_push_conf`) b

SET a.`switch_push`=b.open_push

WHERE a.id=b.user_id

联表更新示例:

UPDATE encrypt_user e , user_auth_base u SET account_cid_md5=MD5(CONCAT(e.account,UPPER(u.id_number))) WHERE e.user_id=u.user_id

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。