質問: InnerJoinTB2.番号 WHERE InnerJoinTB1.グループID != InnerJoinTB2.グループID ``` 番号テーブル ID グループID 番号 100 1 1000 200 1 2000 300 2 3000 400 3 4000 組み合わせテーブル ID A番号 B番号 1 1000 2000 2 3000 1000 3 4000 1000 4 2000 1000 ※A番号とB番号が番号テーブルに紐づく
回答: `組み合わせテーブル.ID`でレコードが一意になるのであれば、元のSELECT文を副問い合わせにして削除対象のIDを指定するのがよいと思います。 ``` /* 例 */ DELETE FROM 組み合わせテーブル WHERE 組み合わせテーブル.ID IN ( SELECT 組み合わせテーブル.ID FROM 組み合わせテーブル INNER JOIN 番号テーブル AS InnerJoinTB1 ON 組み合わせテーブル.A番号 = InnerJoinTB1.番号 INNER JOIN 番号テーブル AS InnerJoinTB2 ON 組み合わせテーブル.B番号 = InnerJoinTB2.番号 WHERE InnerJoinTB1.グループID != InnerJoinTB2.グループID ) ``` あるいは、PostgreSQL拡張を用いるのであれば、`using`句を用いて`番号テーブル`を指定する方法もあると思います。(参考: PostgreSQLのDELETE文の説明)