首页 > 解决方案 > 仅从一列中为另一列中的每个值选择一个值,以及对应的其他列值

问题描述

这似乎是一个非常简单的问题,但我无法解决,想象一下我有下表:

ID  MessageId   ReceiverId
----------------------------
1   1           1
2   1           2
3   2           3
4   3           1
5   3           2

我想要一个在其列中具有唯一值的结果,这MessageId意味着只有一行MessageId是 1,无论哪一行。像这样的东西:

ID  MessageId   ReceiverId
----------------------------
1   1           1
3   2           3
4   3           1

如果它应该只返回一列,我不会使用GROUP BY,因为我需要所有列。

标签: sqlsql-server

解决方案


看来您需要相关的子查询:

select m.*
from msg m
where id = (select top (1) id
            from msg m1 
            where m1.messageid = m.messageid
            order by m1.ReceiverId 
           );

推荐阅读