标题可能令人困惑,这是我的架构
这是我的查询结果
我如何删除重复项,只是突出显示值,我正在尝试按消息时间排序
此致
答案 0 :(得分:1)
SQL-Server中的一种方法是使用类似ROW_NUMBER
的排名函数:
WITH CTE AS
(
SELECT c.ContactID, c.Name, m.Text, m.Messagetime,
RN = ROW_NUMBER() OVER (PARTITION BY c.ContactID
ORDER BY m.MessageTime DESC)
FROM dbo.Contacts c
INNER JOIN Messages m ON c.ContactID = m.ContactID
)
SELECT ContadctId, Name, Text, Messagetime
FROM CTE
WHERE RN = 1
答案 1 :(得分:1)
以下语法适用于SQL Server和MySQL:
SELECT c.ContactID, c.Name, m.Text, m.Messagetime
FROM Contacts c INNER JOIN
Messages m
ON c.ContactID = m.ContactID
WHERE NOT EXISTS (select 1
from messages m2
where m2.ContactId = m.ContactId and
m2.MessageTime > m.MessageTime
)
ORDER BY m.MessageTime desc;
请注意,如果您有最近的消息时间重复,则会返回所有消息。