【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不允许对同一张表进行查询和更新操作

以上是 【mysql】为什么mysql不允许对同一张表进行查询和更新操作?为什么mysql不允许对同一张表进行查询和更新操作 的全部内容, 来源链接: utcz.com/a/75288.html

回到顶部