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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 13:30:33  来源:igfitidea点击:

Unknown table in MULTI DELETE

mysql

提问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;