假设我有一张客户地址表:
CName | AddressLine
-------------------------------
John Smith | 123 Nowheresville
Jane Doe | 456 Evergreen Terrace
John Smith | 999 Somewhereelse
Joe Bloggs | 1 Second Ave
在表中,像John Smith这样的一位客户可以有多个地址。
我需要此表的选择查询,以仅返回在“CName”中存在重复项的情况下找到的第一行。对于此表,它应该返回除第3个(或第1个-这两个地址中的任何一个都可以,但只能返回一个)之外的所有行。
是否可以根据服务器是否之前已经查看过列值将关键字添加到SELECT查询中进行过滤?
最佳答案
如果您说自己不在乎使用哪个地址,那么这是一个非常简单的答案。
SELECT
CName, MIN(AddressLine)
FROM
MyTable
GROUP BY
CName
如果您想根据“插入的”列作为第一个,则使用不同的查询
SELECT
M.CName, M.AddressLine,
FROM
(
SELECT
CName, MIN(Inserted) AS First
FROM
MyTable
GROUP BY
CName
) foo
JOIN
MyTable M ON foo.CName = M.CName AND foo.First = M.Inserted
关于sql - 如何只为列的每个唯一值选择第一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4662464/