2016-06-08 62 views
0

我正在嘗試編寫一個select語句來檢索具有多個電話號碼的給定客戶的重複記錄。我只想要顯示唯一的手機。例如:表中的數據來自一列的重複記錄和另一列在postgresql中的另一列

Customer Number Phone Number 
123    408-211-1234 
123    408-211-1234 
123    321-456-7890 
123    321-123-4567 
345    897-345-1010 

輸出

Customer Number Phone Number 
123    408-211-1234 
123    321-456-7890 
123    321-123-4567 
345    897-345-1010 

任何幫助在此將不勝感激。

謝謝!

回答

2

這可以通過在SELECT語句「獨特的」,像這樣來實現:

SELECT DISTINCT customer_number, phone_number FROM my_table; 

使用SELECT DISTINCT是一般鼓勵的方式又回到一組不同的(注意,DISTINCT適用於整個行被返回;如果給定的customer_number有多個電話號碼,它們將全部返回)。

另一種方法,然而,是使用GROUP BY,就像這樣:

SELECT customer_number, phone_number 
FROM my_tabl 
GROUP BY customer_number, phone_number; 

使用GROUP BY還允許您使用集合體,你應該選擇,像這樣:

SELECT customer_number, phone_number, count(*) 
FROM my_table 
GROUP BY customer_number, phone_number; 

以上將返回表中給定「customer_number和phone_number」重複的次數。

+0

謝謝斯蒂芬。如果我需要給定表中的所有列,該怎麼辦? – user6437844

+0

我試過這個:select * from table_name where(phone_number)IN(通過phone_number從table_name order中選擇不同的phone_number); – user6437844

+0

如果其他列在行之間具有相同的內容,那麼您可以簡單地將它們添加到SELECT DISTINCT列列表或GROUP BY查詢的SELECT和GROUP BY列表中。你也可以這樣做:SELECT DISTINCT * FROM table_name; –