使用嵌套选择查询的MySQL删除
我有以下MySQL查询:使用嵌套选择查询的MySQL删除,mysql,sql-delete,Mysql,Sql Delete,我有以下MySQL查询: DELETE FROM catalogue WHERE catalogue_id IN ( SELECT catalogue_id FROM catalogue WHERE ( product_id = (SELECT product_id FROM catalogue WHERE catalogue_id = '2290') AND length_id = (SELECT length_id FROM catalogue WHERE
DELETE FROM catalogue
WHERE catalogue_id IN (
SELECT catalogue_id
FROM catalogue
WHERE (
product_id = (SELECT product_id FROM catalogue WHERE catalogue_id = '2290')
AND length_id = (SELECT length_id FROM catalogue WHERE catalogue_id = '2290')
AND gauge_id = (SELECT gauge_id FROM catalogue WHERE catalogue_id = '2290')
)
)
但当我尝试执行时,会收到以下错误消息:
无法在FROM子句中指定更新的目标表“目录”
有人能告诉我哪里出了问题吗?执行双重嵌套
DELETE FROM catalogue
WHERE catalogue_id IN (SELECT catalogue_id FROM (
SELECT catalogue_id
FROM catalogue
WHERE (
product_id = (SELECT product_id FROM catalogue WHERE catalogue_id = '2290')
AND length_id = (SELECT length_id FROM catalogue WHERE catalogue_id = '2290')
AND gauge_id = (SELECT gauge_id FROM catalogue WHERE catalogue_id = '2290')
)) x
)
它愚弄了mysql,或者您可以使用临时表:
CREATE TEMPORARY TABLE t AS
SELECT catalogue_id
FROM catalogue
WHERE (
product_id = (SELECT product_id FROM catalogue WHERE catalogue_id = '2290')
AND length_id = (SELECT length_id FROM catalogue WHERE catalogue_id = '2290')
AND gauge_id = (SELECT gauge_id FROM catalogue WHERE catalogue_id = '2290')
);
DELETE FROM catalogue WHERE catalogue_id IN (SELECT catalogue_id FROM t);
通过查询,您得到了
您不能在FROM子句中指定更新的目标表'catalog',因为您不能在一个查询中对同一个表进行选择和更新。在zerkms中工作得很好,但是必须“愚弄”MySQL的原因是什么?如果您有多个WHERE
列,该怎么办?i、 e.从目录中删除目录id和目录名称所在的目录。
@ThreaT:我不知道你在问什么。可以使用ADD
添加多个谓词,是的。您将如何更改答案以使用ADD
?已经9年了,仍然需要这种黑客技术。感谢Kamil的解释。