Postgresql
uniq 連接 3 個表,關係表不是 uniq
我正在使用 Postgres。
我有 3 張桌子:
table_1 id table_1_2 table_1_id, table_2_id table_2 id
問題是關係表
table_1_2
不是唯一的。即,
table_1_2
將多次具有相同的元組:{1,1}, {1,1}, {1,1}, {1,1}, {1,1}, {1,2}, {1,2}, {1,2} etc.
有沒有辦法加入
table_1
和table_2
使用table_1_2
,但只有 uniq 結果?目前,我將從關係表中獲取所有重複項。
有很多方法。這是一個(應該是檢索所有行的快速變體):
SELECT t1.*, t2.* FROM table1 t1 JOIN ( SELECT DISTINCT table_1_id, table_2_id FROM table1_2 ) t1_2 ON t1_2.table_1_id = t1.id JOIN table2 t2 ON t2.id = t1_2.table_2_id;
為什麼不永久刪除重複項?並添加一個
UNIQUE
約束…