1
DELETE FROM table1
WHERE field1=(SELECT id FROM table2 WHERE type=1) 
OR field2=(SELECT id FROM table2 WHERE type=1)

このクエリを記述する適切な方法は何ですか? サブクエリが複数の行を返すため、現在は機能しません。

4

3 に答える 3

5

使用IN:

DELETE FROM table1
WHERE field1 IN (SELECT id FROM table2 WHERE type=1) 
OR field2 IN(SELECT id FROM table2 WHERE type=1)
于 2012-09-11T19:57:53.300 に答える
3

あなたはこれを行うことができますIN

delete
from table1
where field1 in (
        select id
        from table2
        where type = 1
        )
    or field2 in (
        select id
        from table2
        where type = 1
        )
于 2012-09-11T19:57:41.813 に答える
1

テーブルのサイズによっては、IN アプローチを回避できる場合があります。それらが大きい側にある場合は、DELETE...USING 構文を使用できます。

DELETE FROM foo USING foo, bar WHERE foo.field1=bar.id OR foo.field2=bar.id
于 2012-09-11T20:08:07.850 に答える