0

我有这张桌子

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

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

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

1
3
2

用户写的顺序

4

1 回答 1

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是一个可怕的列名称。首先因为它也是一个保留关键字,其次因为它没有记录它的意图。是“发布日期”、“编辑日期”、“删除日期”、“发布日期”还是完全不同的东西?

于 2013-09-29T11:46:42.067 回答