エンティティ間の関係を記述する Postgres テーブルがあります。このテーブルは、変更できないプロセスによって入力されます。これはそのテーブルの例です:
+-----+-----+
| e1 | e2 |
|-----+-----|
| A | B |
| C | D |
| D | C |
| ... | ... |
+-----+-----+
テーブルから不要なリレーションシップをすべて削除する SQL クエリを作成したいと考えてい[D, C]
ます[C, D]
。
自己結合を使用して削除するクエリがありますが、これにより関係に関係するすべてが削除されます。
DELETE FROM foo USING foo b WHERE foo.e2 = b.e1 AND foo.e1 = b.e2;
結果:
+-----+-----+
| e1 | e2 |
|-----+-----|
| A | B |
| ... | ... |
+-----+-----+
ただし、関係の 1 つを残すクエリが必要です。どちらの関係が残っているか、[C, D]
または[D, C]
両方が残っているかは問題ではありません。
ここには簡単な解決策があるように感じますが、それは私を逃れています。