DELETE FROM table1
WHERE field1=(SELECT id FROM table2 WHERE type=1)
OR field2=(SELECT id FROM table2 WHERE type=1)
このクエリを記述する適切な方法は何ですか? サブクエリが複数の行を返すため、現在は機能しません。
DELETE FROM table1
WHERE field1=(SELECT id FROM table2 WHERE type=1)
OR field2=(SELECT id FROM table2 WHERE type=1)
このクエリを記述する適切な方法は何ですか? サブクエリが複数の行を返すため、現在は機能しません。
使用IN
:
DELETE FROM table1
WHERE field1 IN (SELECT id FROM table2 WHERE type=1)
OR field2 IN(SELECT id FROM table2 WHERE type=1)
あなたはこれを行うことができますIN
:
delete
from table1
where field1 in (
select id
from table2
where type = 1
)
or field2 in (
select id
from table2
where type = 1
)
テーブルのサイズによっては、IN アプローチを回避できる場合があります。それらが大きい側にある場合は、DELETE...USING 構文を使用できます。
DELETE FROM foo USING foo, bar WHERE foo.field1=bar.id OR foo.field2=bar.id