0

みんな、ネストされたクエリを使用してデータベースからいくつかのレコードを削除しようとしています:

delete from imageviewer_crreviewerformdata
where imageviewer_crreviewerformdata.FormDataId in
(select distinct imageviewer_crreviewerformdata.FormDataId
from imageviewer_crreviewerformdata,imageviewer_crtask
where imageviewer_crreviewerformdata.TaskId = imageviewer_crtask.TaskId
and imageviewer_crtask.RevProtId in (1));

よく知られている mysql 例外が発生します。誰かがクエリの作成を手伝ってくれませんか?

4

3 に答える 3

1
delete d 
from imageviewer_crreviewerformdata d
inner join imageviewer_crtask t on d.TaskId = t.TaskId
where t.RevProtId in (1)
于 2013-10-22T10:51:45.363 に答える
0

そのテーブルを選択のソースとして使用してテーブルから削除する必要がある場合、通常、削除の参照として使用する一時テーブルを作成します。少し伝統的かもしれませんが、うまくいきます。

一時テーブルを作成し、一時テーブルに結合して削除してから、一時テーブルを削除する必要があります。

CREATE TEMPORARY TABLE temp.tempdelete AS select distinct
imageviewer_crreviewerformdata.FormDataId
from imageviewer_crreviewerformdata,imageviewer_crtask
where imageviewer_crreviewerformdata.TaskId = imageviewer_crtask.TaskId
and imageviewer_crtask.RevProtId in (1));

その後、削除できます

DELETE FROM imageviewer_crreviewerformdata WHERE FormDataId IN (SELECT FormDataId FROM temp.tempdelete) 

次に、一時テーブルをドロップします。

DROP TABLE temp.temptable.

これには、temp という名前のフォルダーが必要です。また、ストアド プロシージャで簡単に使用できる優れたソリューションです。

于 2013-10-22T10:58:23.617 に答える
0

したがって、クエリからテーブルエイリアスを削除するように指示しているだけだと思います

delete from imageviewer_crreviewerformdata
where FormDataId in
(select distinct imageviewer_crreviewerformdata.FormDataId
from imageviewer_crreviewerformdata,imageviewer_crtask
where imageviewer_crreviewerformdata.TaskId = imageviewer_crtask.TaskId
and imageviewer_crtask.RevProtId in (1));
于 2013-10-22T10:51:01.910 に答える