SQL Group通过无序查询

时间:2013-09-29 11:38:01

标签: sql sql-server

我有这张桌子

UserId   Messagge   Date

1        Hi         2013-01-01
1        Bye        2013-02-01
3        Hi         2013-01-01
2        Hi2        2013-01-02
2        Hi3        2013-01-02

我需要按照用户编写的顺序列出用户的消息。但SQL查询:

select DISTINCT t.UserId from (select UserId,Date from Messages) as t 

返回:

1
2
3

我无法按日期订购子查询,无论如何,如果我尝试对查询进行区分,则始终会对用户的ID进行排序。

我需要一个返回的SQL查询:

1
3
2

用户编写的顺序

1 个答案:

答案 0 :(得分:2)

select userid
from (
   select userid, 
          min(date) as min_date
   from messages
   group by userid
) t
order by min_date

SQLFiddle示例:http://sqlfiddle.com/#!3/015ff/1

顺便说一下:date是一个可怕的名字。首先是因为它也是一个保留关键字,其次是因为它没有记录它的意图。是“发布日期”,“编辑日期”,“删除日期”,“发布日期”还是完全不同的东西?