Sql-Server
基於列中的 NULL 值的條件 ORDER BY
我有一張這樣的桌子。表(student_name nvarchar(20) 不為 NULL,等級 int)。當我寫
select * from table order by grades asc
它表明了這一點
student_name | grades --------------------- Ann | NULL Bob | NULL Bob | 10 Jane | 25 Nelly | 30
什麼時候
select * from table order by grades desc
student_name | grades --------------------- Nelly | 30 Jane | 25 Bob | 10 Ann | NULL Bob | NULL
但我需要像這樣訂購。最後是NULL,但那些有等級的人按升序排列,比如
student_name | grades --------------------- Bob | 10 Jane | 25 Nelly | 30 Ann | NULL Bob | NULL
怎麼可能這樣做一個有條件的訂單?如何指定 NULL 值在最後?
您可以在檢查訂單時添加一個案例,以賦予 NULL 較低的優先級,然後過濾等級
SELECT * FROM table ORDER BY CASE WHEN grades IS NULL THEN 2 ELSE 1 END ASC, grades ASC;
由於您使用的是整數,因此您也可以這樣做,這應該會更高效
SELECT * FROM table ORDER BY -grades DESC;