2010-07-27 81 views
1

比方說,我有一個查詢結果如下所示:SQL - 如何選擇具有相同ID的多行的第一行(或任何唯一行)?

ID NAME Phone 
---- ---- ----- 
1  Bob  111-111-1111 
1  Bob  222-222-2222 
1  Bob  333-333-3333 
2  Stan 555-555-5555 
3  Mike 888-888-8888 
3  Mike 777-777-7777 

我想回到剛纔的每個ID值的單行實例。對我而言,無論哪一個我都能得到 - 這個集合中的第一個是可以的。

因此,一個可能的結果將是:

ID NAME Phone 
---- ---- ----- 
1  Bob  111-111-1111 
2  Stan 555-555-5555 
3  Mike 888-888-8888 
+0

您正在使用哪種RDBMS? – 2010-07-27 02:19:33

+0

@湯姆 - 現在訪問2010年(是的,我很尷尬承認它),但真正的我的問題是要儘可能通用。 – Howiecamp 2010-07-27 02:36:27

+2

嘿......沒有理由不好意思。有時Access是這項工作的正確工具。 :) – 2010-07-27 14:40:37

回答

7

對於SQL Server [編輯]和MS Access,你可以做

SELECT [ID], [Name], MIN(Phone) as PhoneNumber 
FROM PhoneNumbers 
GROUP BY [ID], [Name] 

這將返回

ID NAME Phone 
---- ---- ----- 
1  Bob  111-111-1111 
2  Stan 555-555-5555 
3  Mike 777-777-7777 

你可能想爲表格添加某種唯一的鍵,只是一個想法。

+0

謝謝。這不是一個表格,而是一個先前查詢的結果。我很快就會試試這個... – Howiecamp 2010-07-27 02:51:04

+0

很好用,謝謝。 – Howiecamp 2010-07-27 11:05:36

+0

Min()的替代方法是Max(),First()和Last()。後兩者將根據排序順序返回不同的數據。 – 2010-07-28 19:46:23

1

如果您向我們提供了您獲得的第一個結果的T-SQL語句,以及如何重新編寫以獲得您想要的結果的信息,我們可能也可以幫助您向一個方向發展。

+0

我猜想我認爲這應該不重要,因爲我可以用多種不同的方式得到這個結果集。我真的只需要從這一點開始解決。 – Howiecamp 2010-07-27 11:04:45

相關問題