我有这样的表:
+---------------------+-------------+-----------------------------------+
| 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,但是我得不到好结果。
答案 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;