MySQL MULTI DELETE 中的未知表
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10728581/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Unknown table in MULTI DELETE
提问by Maxime Laval
This query gives me an error in MySQL 5.1.57, works in 5.1.53 though:
此查询在 MySQL 5.1.57 中给我一个错误,但在 5.1.53 中有效:
DELETE f
FROM table1 AS f
JOIN table2 AS dsy
JOIN table3 AS ds
JOIN table4 AS dp
JOIN table5 AS dg
WHERE
dsy.f1 = f.f1
AND ds.f2 = f.f2
AND dp.f3 = f.f3
AND dg.f4 = f.f4
AND dsy.school_year = 2011
AND ds.id = 29620
AND dp.id = 14120
AND dg.grade_level = 5;
The error is: Unknown table 'f' in MULTI DELETE
错误是:未知表 'f' in MULTI DELETE
Thanks!
谢谢!
EDIT: Actually this query works, the thing is I was using the schema name to declare my tables like schema.table1 (I removed it to post a more clear query here), with the schema name it breaks...
编辑:实际上这个查询有效,问题是我使用模式名称来声明我的表,如 schema.table1(我删除它以在此处发布更清晰的查询),模式名称打破了......
回答by Devart
Try this query -
试试这个查询 -
DELETE f
FROM table1 AS f
JOIN table2 AS dsy
ON dsy.f1 = f.f1
JOIN table3 AS ds
ON ds.f2 = f.f2
JOIN table4 AS dp
ON dp.f3 = f.f3
JOIN table5 AS dg
ON dg.f4 = f.f4
WHERE
dsy.school_year = 2011 AND ds.id = 29620 AND dp.id = 14120 AND dg.grade_level = 5;
回答by Korhan Ozturk
Have you tried removing all of your table alias? There is a similar solution proposed here. So the following might work:
您是否尝试删除所有表别名?这里提出了一个类似的解决方案。所以以下可能有效:
DELETE table1
FROM table1
JOIN table2
JOIN table3
JOIN table4
JOIN table5
WHERE
table2.f1 = table1 .f1
AND table3.f2 = table1.f2
AND table4.f3 = table1.f3
AND table5.f4 = table1.f4
AND table2.school_year = 2011
AND table3.id = 29620
AND table4.id = 14120
AND table5.grade_level = 5;
回答by mr_squall
I resolved same error with using schema after delete:
我在删除后使用架构解决了同样的错误:
DELETE **`schemaX`.f**
FROM `schemaX`.table1 AS f
JOIN table2 AS dsy
JOIN table3 AS ds
JOIN table4 AS dp
JOIN table5 AS dg
WHERE
dsy.f1 = f.f1
AND ds.f2 = f.f2
AND dp.f3 = f.f3
AND dg.f4 = f.f4
AND dsy.school_year = 2011
AND ds.id = 29620
AND dp.id = 14120
AND dg.grade_level = 5;