2011-03-23 448 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