0

これを実行すると:

DELETE FROM folders AS fo
LEFT OUTER JOIN files AS fi 
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000))

... 構文エラーが発生します。

#1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'AS fo LEFT OUTER JOIN files AS fi ON fo.folderId = fi.folderId WHERE fi.fold' 付近で使用する正しい構文を確認してください。

コードはSELECT、目的の行を返すクエリに基づいています。エラーメッセージの理由は何ですか?

4

2 に答える 2

1
DELETE
  FROM folders fo
 WHERE NOT EXISTS (SELECT 1
                     FROM files fi
                    WHERE fi.folderId = fo.folderId)
   AND fo.folderId IN (63, 1000)
于 2013-03-15T11:22:21.617 に答える
1

それが「うまくいかない」ことは驚くべきことではありません。コードを実行すると、構文エラーが発生します。

SQL エラー (1064): SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'AS fo LEFT OUTER JOIN files AS fi ON fo.folderId = fi.folderId WHERE fi.fold' 付近で使用する正しい構文を確認してください。

正しい構文は次のとおりです。

DELETE fo -- Note I've added table name
FROM folders AS fo
LEFT OUTER JOIN files AS fi 
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000));
于 2013-03-15T11:31:02.563 に答える