声明: MySQL4.0之后的版本可以支持下面sql语句进行更新操作
应用场景:
一个表中的字段需要根据查询结果集进行更新,或者从另一表查询获得 其本质还是更新的数据需要查询获得.
例如: user 表中有也用户会员卡数量的字段,而这些数据保存在另一张表membership_card ,membership_card 表的一条记录代表着一个用户拥有某家商店的会员卡.那么要将想更新用户会员卡数量的字段
更新方法有两种
第一种使用连接关键字,如 left join .....等
update user t LEFT JOIN ( SELECT COUNT(DISTINCT user_id,shop_id) as a ,user_id from membership_card GROUP BY user_id ) t1 on t.id=t1.user_id set t.membership_cards = t1.a ; COMMIT;
第二种是直接利用 "," 直接连接"两张表"(查询结果也是张临时表)
update user t , ( SELECT COUNT(DISTINCT user_id,shop_id) as a ,user_id from membership_card GROUP BY user_id ) t1 set t.membership_cards = t1.a where t.id=t1.user_id; COMMIT;