4

データベースから特定のアイテムを削除したい。次のクエリがあります。

SELECT * 
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

これは機能し、2 つの結果が返されます。

SELECTここで、このクエリをクエリに変えたいと思いDELETEます。ただし、以下は機能しません。

DELETE FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

MySQL は次のエラーをスローします。

1064 - SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

ここで何が間違っていますか?

4

6 に答える 6

10

MySQL 4以降では、次の構文を使用して、一度に複数のテーブルから削除することがサポートされています。

DELETE sheets, entries
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

バージョン 4 より前の MySQL を使用している場合は、一度に 1 つのテーブルから行を削除する必要があり、ここに掲載されている他の解決策のいずれかを使用できます。

于 2009-11-20T12:28:04.743 に答える
2

試す

DELETE sheets, entries 
FROM sheets, entries
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

一度に2つのテーブルからSQLを削除すると、このフォーラムの投稿が見つかりました

于 2009-11-20T12:27:44.087 に答える
2

MySQLでは結合を削除できますが、列を指定する必要があるため、例を使用すると、正しい構文は次のようになります

DELETE シート.*、エントリ.* FROM シート、エントリ WHERE エントリ.シート ID = シート.ID AND シート.クライアント ID = 13
于 2009-11-20T12:33:16.170 に答える
0

このようなものを試すことができますか

DELETE FROM sheets
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

シートから削除したい場合

DELETE FROM entries
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

エントリからの場合

于 2009-11-20T12:23:24.687 に答える
0

DELETE一度に1 つのテーブルからしかできないと思います。

DELETE FROM entries
WHERE entries.sheetID IN
(SELECT ID FROM sheets WHERE clientID = 13)

DELETE FROM sheets
WHERE sheets.clientID = 13
于 2009-11-20T12:24:09.740 に答える
0

一度に 1 つのテーブルからのみ削除できます。同じクエリから両方の削除を実行したい場合は、次のようにすることができます。

DELETE from sheets where id in (
SELECT sheets.id
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13);
DELETE from entries where id in (
SELECT entries.id
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13);
于 2009-11-20T12:28:50.467 に答える