[英]Order by condition in T-SQL
我有兩個結果列。 一個是用戶名,另一個是日期時間,可以檢查每個用戶何時查看帖子。 如果用戶未看到該帖子,則日期時間值為NULL。
我想訂購這樣的數據。 date-time為null或不為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時,按日期時間排序。
希望大家能理解,如果不清楚,請發表評論。
您可以使用
order by case when lastdate is null then 0
else 1 end, username
我建議使用left join
聯接並將查詢的短語設置為:
SELECT u.username AS username,
MAX(w1.date) AS lastdate
FROM user_info u LEFT JOIN
w1
ON w1.userid = u.userid
WHERE u.usergroup = 'student'
GROUP BY u.username
ORDER BY (CASE WHEN w1.date IS NULL THEN 1 ELSE 0 END),
u.username;
SELECT DISTINCT
幾乎不適合GROUP BY
。
我還建議限定查詢多個表的查詢中的所有列引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.