gpt4 book ai didi

尝试删除行时 MySQL 错误代码 1093

转载 作者:行者123 更新时间:2023-12-04 15:07:35 26 4
gpt4 key购买 nike

我正在做一个家庭作业,其中的说明是“删除与玩家 57 住在同一个城镇的所有玩家,但保留有关玩家 57 的数据。”有一个名为“Players”的表,其中包含 PlayerNo 和 Town 作为列以及各种其他数据。我尝试了以下查询:

delete from players 
where town = (select town from players where playerno = 57)
and playerno <> 57;

但我收到以下错误消息:

“错误代码:1093。您不能在 FROM 子句中指定要更新的目标表‘players’”

我该如何解决这个问题?

最佳答案

您可以使用内部联接重新表述您的删除查询:

DELETE
FROM players p1
INNER JOIN (SELECT town FROM players WHERE playerno = 57) p2
ON p2.town = p1.town
WHERE
p1.playerno <> 57;

顺便说一句,1093 错误的原因是 MySQL 可能正在修改 players 表,同时您的子查询正试图引用它。一种解决方法是将该子查询包装在另一个子查询中:

DELETE
FROM players
WHERE town = (SELECT town
FROM (SELECT town
FROM players
WHERE playerno = 57) t ) AND
playerno <> 57;

这个技巧之所以有效,是因为 MySQL 会在更新运行之前首先具体化子查询,以避免 1093 错误。

关于尝试删除行时 MySQL 错误代码 1093,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65812609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com