2011-03-23 271 views
3

我有這樣的一個表:SQL多個列DISTINCT查詢

Artist Image Title 

Smith 2  Country 
Smith 5  Town 
Doyle 21  Cat 
Lawlor 24  Ball 
Jones 8  Cheese 
Jones 12  Bread 
Jones 15  Butter 

我想建立一個DISTINCT查詢一次返回藝術家 - 並不重要的記錄被返回。這是我正在尋找:

Artist Image Title 
Smith 2  Country 
Doyle 21  Cat 
Lawlor 24  Ball 
Jones 8  Cheese 

我在MS Access數據庫上使用ASP。

任何幫助非常感謝。

回答

2

Access有FIRSTLAST聚集其中R eturn the first or last record as it was entered in chronological order

SELECT Artist, FIRST(Image) AS Image, FIRST(Title) AS Title 
FROM table 
GROUP BY Artist 
+1

實際上,它比數據輸入的時間順序稍微複雜些;而是基於聚集索引順序。聚簇索引基於表的'PRIMARY KEY';如果沒有'PRIMARY KEY',就知道使用'UNIQUE'約束,但是有多個選項可以選擇,沒有人知道它會選擇哪一個。聚集索引在文件壓縮時重建,隨後將按時間順序考慮插入的行。換句話說,「FIRST」和「LAST」應該被認爲是任意的。 – onedaywhen 2011-03-23 16:26:13

+0

@onedaywhen - 感謝您的澄清。是否保證如果用於多列,它們將始終來自同一行? – 2011-03-23 16:33:10

+1

實際上,First()和Last()是基於ORDER BY的。如果你沒有提供ORDER BY,它可能是正確的,它將基於聚集索引的順序,但我不會下注。坦率地說,我沒有看到包括列的地方,你基本上隨意選擇你想在這些列中顯示的內容。 – 2011-03-23 21:47:19