0
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable where roll=1)

私はテーブルを持っていますmytable。上記のクエリはエラーをスローしています。

FROM句で更新するターゲットテーブル'mytable'を指定することはできません

4

6 に答える 6

3

MySQLドキュメントから:

現在、サブクエリでテーブルから削除して同じテーブルから選択することはできません。

幸い、サブクエリは必要ありません。ただ行う:

DELETE FROM mytable WHERE roll=1

起動するのははるかに短く、明確です。

于 2010-11-15T09:25:17.213 に答える
1

どうしてこんなことをしてみませんか?

DELETE FROM mytable WHERE roll=1
于 2010-11-15T09:25:34.987 に答える
0

書いてみませんか

DELETE FROM mytable WHERE roll=1

?上位のクエリが同じテーブルを変更するときに、MySqlがサブクエリのテーブルからフェッチすることを好まないため、エラーが発生します。

于 2010-11-15T09:25:50.463 に答える
0

なぜ単純ではないのですか?

DELETE FROM mytable WHERE roll=1
于 2010-11-15T09:26:05.523 に答える
0

なぜサブクエリを使用しているのですか?あなたはそれをこのように書くことができます:

DELETE FROM mytable WHERE where roll=1;
于 2010-11-15T09:27:01.817 に答える
0

このスレッドでは、これができない理由を説明しています。

この例では、次を使用できます。

DELETE FROM mytable WHERE roll=1
于 2010-11-15T09:27:02.063 に答える