Sql 然后表中的组是唯一id

Sql 然后表中的组是唯一id,sql,sql-server,Sql,Sql Server,我有这样的桌子: +-----------+-------+------------------+ |ID |主题|消息|创建日期|消息| ID| +-----------+-------+------------------+ |1 |测试1 |文本1 | 2014-10-01.| 8f918db316f64c638b7b6d1fcd3c0ea3| |2 |测试1 |文本1 | 2014-10-01.| 8f918db316f64c638b7b6d1fcd3c0ea3| |3 |测试1 |文本

我有这样的桌子:

+-----------+-------+------------------+ |ID |主题|消息|创建日期|消息| ID| +-----------+-------+------------------+ |1 |测试1 |文本1 | 2014-10-01.| 8f918db316f64c638b7b6d1fcd3c0ea3| |2 |测试1 |文本1 | 2014-10-01.| 8f918db316f64c638b7b6d1fcd3c0ea3| |3 |测试1 |文本1 | 2014-10-01.| 8f918db316f64c638b7b6d1fcd3c0ea3| |4 |测试2 |文本2 | 2014-10-02..cb648984779b4af9bc04d9de7fc5939b| |5 |测试2 |文本2 | 2014-10-02..cb648984779b4af9bc04d9de7fc5939b| |6 |测试3 |文本3 | 2014-10-03..BB43EA1DE81340BB95320217DCD63633B| +------+-----+-------+------------------+

ID是唯一的邮件ID。邮件ID是唯一的ID,生成后我将邮件发送到组Active directory。我只想为每个消息ID首先获取主题和消息。结果如下:

+-----------+-------+---------+ |主题|消息|消息| ID| +-----------+-------+---------+ |测试1 |文本1 | 8f918db316f64c638b7b6d1fcd3c0ea3| |测试2 |文本2 | cb648984779b4af9bc04d9de7fc5939b| |测试3 |文本3 | BB43EA1DE81340BB95320217DCD63633B| +------+-----+-------+---------+


我尝试使用GROUO BY和DISTINCT,但无法获得良好的结果。

在SQL Server中执行此操作的最佳方法是使用行号:


第一个当然是创建日期最低的记录,但是对于具有相同消息ID的所有记录,创建日期似乎是相同的?如果是的话,你认为第一个记录是什么?
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;