Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法,需要的朋友可以参考下
单表更新 UPDATE table_name SET field1=new-value1, field2=new-value2 ...多表更新 情况一: UPDATE userA as a , userB as b SET a.num = b.num*0.5 WHERE a.id = b.uid AND a.deleted_at is null; UPDATE u...
单表更新
UPDATE table_nameSET field1=new-value1, field2=new-value2WHERE field=value
多表更新
情况一:
UPDATE userAas a, userBas bSET a.num= b.num*0.5WHERE a.id= b.uidAND a.deleted_at isnull;UPDATE userAas aINNERJOIN userBas bON a.id= b.uidSET a.num= b.num*0.5WHEREAND a.deleted_at isnull;
情况二:
UPDATE userAas aINNERJOIN userBas bON a.id= b.uidSET a.num= b.num*0.5,a.state=1WHERE a.id= b.id AND a.deleted_at isnullAND( b.gb_name='a'OR b.gb_name='b'OR b.gb_name='c'OR b.gb_name='d'OR b.gb_name='e'OR b.gb_name='f'OR b.gb_name='g');
扩展:
inner join和where区别:
1 WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。