12

このクエリでは、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 のようなテーブルを宣言していたことです (より明確なクエリをここに投稿するために削除しました)、スキーマ名が壊れています...

4

3 に答える 3

22

このクエリを試してください -

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;
于 2012-05-24T07:00:07.820 に答える
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;
于 2012-05-23T23:48:37.553 に答える
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;
于 2015-01-29T10:00:12.733 に答える