MULTI DELETE中的未知表

时间:2012-05-23 22:08:12

标签: mysql

此查询在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;

错误是:MULTI DELETE中的未知表'f'

谢谢!

编辑: 实际上这个查询有效,问题是我正在使用模式名称来声明我的表格,如schema.table1(我删除它以在此处发布更清晰的查询),模式名称中断... ...

3 个答案:

答案 0 :(得分:15)

尝试此查询 -

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;

答案 1 :(得分:3)

您是否尝试删除所有表别名?提出了类似的解决方案here。所以以下内容可能有效:

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;

答案 2 :(得分:1)

我在删除后使用模式解决了同样的错误:

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;