gpt4 book ai didi

MYSQL - UPDATE 语句的 WHERE 子句中同一表的子查询

转载 作者:行者123 更新时间:2023-11-29 10:44:07 25 4
gpt4 key购买 nike

我收到“错误 '#1093 - 您无法在 FROM 子句中指定要更新的目标表 't1'”,代码如下:

UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND NOT EXISTS (
SELECT t2.id FROM `table1` t2 WHERE t2.id != 165 AND t2.name = 'abc'
)

但是代码没有问题:

UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND NOT EXISTS (
SELECT t2.id FROM `table2` t2 WHERE t2.id != 165 AND t2.name = 'abc'
)

我做错了什么?

最佳答案

您可以将此查询改写为同一个表的自联接:

UPDATE table1 t1
LEFT JOIN table1 t2
ON t2.id != 165 AND t2.name = 'abc'
SET t1.name = 'abc'
WHERE t1.id = 165 AND t2.name IS NULL

此处的更新逻辑是您的 NOT EXISTS 子句已替换为 LEFT JOIN,其中来自连接左侧的任何记录都没有 匹配 (t2.name IS NULL) 到 id 不为 165 且名称为 abc 的任何记录。

关于MYSQL - UPDATE 语句的 WHERE 子句中同一表的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944745/

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