我在Messages表中有两列,senderUserID和recieverUserID。 我选择senderUserID和recieverUserID,其中当前接收者过去向当前发送者发送了一条消息。我每次只选择10行,但有时在这个表中,当我需要时,senderUserID会出现多次,只有senderUserID才是唯一的,而recieverUserID可以返回多次。
这是样本数据
66622 61350
90166 79222
90176 79222
86727 80452
10888 47305
66560 79219
66622 80452
89548 14452
66622 69177
52081 79223
如您所见,66622在senderUserID中出现两次。我如何限制它只出现一次。
感谢
答案 0 :(得分:5)
;WITH cte AS
(
SELECT senderUserID,
recieverUserID,
ROW_NUMBER() OVER (PARTITION BY senderUserID ORDER BY recieverUserID) AS RN
FROM YourTable
)
SELECT senderUserID,recieverUserID FROM cte
WHERE RN=1
答案 1 :(得分:4)
我会说忽略任何重复。这将为您的每个批次提供少于10个结果,但我更喜欢通过对数据库进行分组来强制执行唯一性(可能很昂贵)。这里的目标是最大化消息吞吐量,对吗?
如果您仍想在SQL中执行此操作:
select senderUserId, max(receiverUserId) from messages group by senderUserId