postgresql刪除重複記錄的一些相關sql語句
自己在做postgresql中作的正確的語法,SQL語句
原始表test_sql
1、查詢重複欄位的重複數select distinct (f1,f2,f3), count(*) from test_sql group by(f1,f2,f3)
結果
2、select distinct (f1,f2,f3), count(*) from test_sql group by(f1,f2,f3) having count(*) >1
結果
3、select distinct f1,f2,f3, count(*) from test_sql group by (f1,f2,f3)having count(*) >1 這樣報錯,由於有多個欄位distinct後加括號才能對
4、select (f1,f2,f3),min(id) from test_sql group by (f1,f2,f3) havingcount(*) >1 前面的(f1,f2,f3)是不能去括號的,也不能單獨查詢1個,因為group by (f1,f2,f3),相當於把(f1,f2,f3)作為1個欄位了。
結果
5、select * from test_sql where id in (select min(id) from test_sqlgroup by (f1,f2,f3) having count(*) >1)
結果
6、select * from test_sql where id in (select min(id) from test_sqlgroup by (f1,f2,f3))
結果
7、delete from test_sql where id not in (select min(id) from test_sqlgroup by (f1,f2,f3))
結果