【mysql】为什么mysql不允许对同一张表进行查询和更新操作?为什么mysql不允许对同一张表进行查询和更新操作
为什么mysql不允许对同一张表进行查询和更新操作?
类似
update person p set p.name= select id from person where pid=4
读写锁的问题?
回答
只有 MySql 不支持这种语法,SQLServer、Oracle 都没有这个问题。
想要做的话需要用个中间结果集:
UPDATE `person` SET `name` = ( SELECT t.`id` FROM (
SELECT p.`id` FROM `person` p WHERE p.`pid` = 4
) t
);
MySql 的官方文档中的相关解释:https://dev.mysql.com/doc/ref...
You cannot update a table and select directly from the same table in a subquery. You can work around this by using a multi-table update in which one of the tables is derived from the table that you actually wish to update, and referring to the derived table using an alias.
至于为什么不支持这种语法,官方没说,只能猜测了。
以上是 【mysql】为什么mysql不允许对同一张表进行查询和更新操作?为什么mysql不允许对同一张表进行查询和更新操作 的全部内容, 来源链接: utcz.com/a/75288.html