2017-06-22 56 views
0

我發現了一個非常有用的刪除查詢,將根據具體列刪除重複的選擇:Postgres的 - 與「使用」

DELETE FROM table USING table alias 
    WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND 
    table.max_field < alias.max_field 

How to delete duplicate entries?

然而,就是有一個相當於選擇查詢,將允許過濾相同的方式?試圖使用但沒有成功。

謝謝。

回答

0

您可以使用特定的列,field1field2與自身join你的表,然後基於這兩個表max_field之間的比較篩選。

select t1.* 
from mytable t1 
    join mytable t2 on (t1.field1 = t2.field1 and t1.field2 = t2.field2) 
where t1.max_field < t2.max_field; 

您將得到所有max_field不是最大的副本。

sqlfiddle這裏。