mysql在同一个表上查询和更新

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xiao__jia__jia/article/details/102769121

                         mysql在同一个表上查询和更新

mysql不允许对同一张表同时进行查询和更新。
错误例子:

update tbl as outer_tbl set cnt = (select count(*) from tbl as inner_tbl where inner_tbl.type = outer_tbl.type);


解决办法:可以通过使用生成表的形式来绕过上面的限制,让mysql把这个表当作一个临时表来处理。实际上,这样子就执行了两个查询:一个是子查询中的select语句,另外一个是多表关联update。子查询在update语句打开表之前就完成,所以能够正常执行。
正确例子:

update tbl inner join (select type, count(*) as cnt from tbl group by type) as der using(type) set tbl.cnt = der.cnt;

猜你喜欢

转载自blog.csdn.net/xiao__jia__jia/article/details/102769121