2つのテーブルがあると想像してください。
テーブルバー:
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
テーブルfoo:
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| name_alternative | varchar(255) | YES | | NULL | |
+------------------+--------------+------+-----+---------+-------+
そして、テーブルのフィールドbar
と同じ値を持つ行をテーブルから削除したいname
name_alternative
foo
次のクエリを使用できます。
DELETE FROM foo WHERE name IN (SELECT name_alternative FROM bar);
ただし、両方のテーブルに大量のレコードがある場合、実行には非常に長い時間がかかります。
ですから、このクエリに代わるより良い方法があるかどうか疑問に思いました。