我有以下查询:
SELECT
a.name, a.address, n.date, n.note
FROM a
LEFT JOIN n ON a.id = n.id
与a.id
具有一对多的关系n.id
,因此可以将多个音符与一个名称相关联。
如何只返回每个名称的最新注释而不是所有注释?
我正在使用 SQL Server 2008。
谢谢。
我有以下查询:
SELECT
a.name, a.address, n.date, n.note
FROM a
LEFT JOIN n ON a.id = n.id
与a.id
具有一对多的关系n.id
,因此可以将多个音符与一个名称相关联。
如何只返回每个名称的最新注释而不是所有注释?
我正在使用 SQL Server 2008。
谢谢。
这是一种使用方式ROW_NUMBER()
SELECT t.name, t.address, t.date, t.note
FROM (
SELECT
a.name, a.address, n.date, n.note,
ROW_NUMBER() OVER (PARTITION BY a.name ORDER BY n.date DESC) rn
FROM a
LEFT JOIN n ON a.id = n.id
) t
WHERE t.rn = 1
替代方案您可以使用相关子查询来获取最大日期,就像这样
SELECT
a.name, a.address, n.date, n.note
FROM a
LEFT JOIN n ON a.id = n.id
WHERE n.date = (SELECT MAX(nn.date)
FROM n AS nn
WHERE a.id = nn.id)