此查询在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(我删除它以在此处发布更清晰的查询),模式名称中断... ...
答案 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;