然后表中的组是唯一的id

时间:2014-10-05 15:44:42

标签: sql sql-server

我有这样的表:

+---------------------+-------------+-----------------------------------+ | ID| Subject| Message | Create date | Message_U_ID | +----------------------+-------------+-----------------------------------+ | 1 | TEST1 | text1 | 2014-10-01..| 8f918db316f64c638b7b6d1fcd3c0ea3 | | 2 | TEST1 | text1 | 2014-10-01..| 8f918db316f64c638b7b6d1fcd3c0ea3 | | 3 | TEST1 | text1 | 2014-10-01..| 8f918db316f64c638b7b6d1fcd3c0ea3 | | 4 | TEST2 | text2 | 2014-10-02..| cb648984779b4af9bc04d9de7fc5939b | | 5 | TEST2 | text2 | 2014-10-02..| cb648984779b4af9bc04d9de7fc5939b | | 6 | TEST3 | text3 | 2014-10-03..| bb43ea1de81340bb95320217dcd6363b | +------------+---------+-------------+-----------------------------------+

ID是唯一的消息ID。 Message_U_ID是生成的唯一ID,然后我将消息发送到组(Active Directory)。我想要获取主题和消息(仅对每个Message_U_ID首先)。结果应该是这样的:

+---------------------+-------------+-----------------+ | Subject| Message | Message_U_ID | +----------------------+-------------+-----------------+ | TEST1 | text1 | 8f918db316f64c638b7b6d1fcd3c0ea3 | | TEST2 | text2 | cb648984779b4af9bc04d9de7fc5939b | | TEST3 | text3 | bb43ea1de81340bb95320217dcd6363b | +------------+---------+-------------+-----------------+

我尝试了GROUO BY和DISTINCT,但是我得不到好结果。

1 个答案:

答案 0 :(得分:2)

在SQL Server中执行此操作的最佳方法是使用row_number()

selet t.*
from (select t.*,
             row_number() over (partition by message_u_id order by create_date) as seqnum
      from table t
     ) t
where seqnum = 1;