【发布时间】:2019-06-24 15:00:09
【问题描述】:
我有两个结果列。 一个是用户名,另一个是日期时间,可以检查每个用户查看帖子的时间。如果用户还没有看到帖子,则日期时间值为 NULL。
我想订购这样的数据。 date-time 为 null 或 not null 都按用户名字母顺序排列。 但是空数据和非空数据应该分开。
SELECT u.username AS username,
MAX(w1.date) AS lastdate
FROM w1
RIGHT OUTER JOIN user_info u ON w1.userid = u.userid
WHERE u.usergroup = 'student'
GROUP BY username
ORDER BY lastdate,
username;
当我运行这个查询时,我能得到的结果是 当日期时间为 NULL 时,用户名按字母顺序排序, 但是当日期时间不为空时,它是按日期时间排序的。
希望大家能理解,如果不够清楚请留言。
【问题讨论】:
-
我不确定我是否理解您的要求。对于您的订单,它将首先将具有
NULL值的行放入lastdate(因为NULL被视为具有“最低”值),然后它将按日期顺序对行进行排序,最低的在前。如果 2 行具有相同的日期,则将按username排序。 -
DISTINCT在该查询中几乎是多余的..
标签: sql sql-server tsql sql-order-by