我有一個「名」兩列的表:姓氏,FIRST_NAME什麼是「序」的意義在ORDER BY子句CASE條件
last_name first_name
--------- ----------
Basu Rohini
Khan Amartya
Nandy Upanita
Ghosh Shankha
NULL Claire
NULL Amelie
當我這樣做(第1 SQL):
SELECT last_name, first_name FROM names
ORDER BY
CASE
WHEN last_name IS NOT NULL THEN 3
ELSE 100
END,
last_name DESC
我得到的輸出:
last_name first_name
--------- ----------
Nandy Upanita
Khan Amartya
Ghosh Shankha
Basu Rohini
NULL Amelie
NULL Claire
但是,當我這樣做(第2 SQL):
SELECT last_name, first_name from names
ORDER BY
CASE
WHEN last_name IS NOT NULL THEN 3
END,
last_name DESC
還是這個(第三SQL):
SELECT last_name, first_name from names
ORDER BY
CASE
WHEN last_name IS NOT NULL THEN 100
ELSE 3
END,
last_name DESC
我得到的輸出開始姓氏爲升序排列NULL和FIRST_NAME,然後按照從大到小的順序非空last_names:
last_name first_name
--------- ----------
NULL Amelie
NULL Claire
Nandy Upanita
Khan Amartya
Ghosh Shankha
Basu Rohini
我的問題:
爲什麼第一個SQL給last_name的輸出按降序排列,對於非空姓?
爲什麼我在第一個SQL'CASE WHEN last_name IS NOT NULL THEN 3'中說'ORDER BY子句中的表達式3和last_name是相同'沒有出錯?
爲什麼我能在CASE語句下給出像3和100這樣的隨機數?按照SQL標準,這個數字只能是任何直到列數的非負整數值。 CASE語句中的整數如何工作?
不,那些3和100只是這裏使用的整數值 - 不是序數位置! 3在100之前,即空名稱之前的非空名稱。 – jarlh
您的大小寫表達式對非空名稱返回3,對空名稱返回100。按該值排序!!! – jarlh
是的,我現在明白了。謝謝:) – riyaB