ORDER BY中的數字引用SELECT列表中的列序數位置。 所以下面的查詢是等同於「C.custid,C.region」排序:使用CASE語句處理ORDER BY中的數字
SELECT
C.custid, C.region
FROM SALES.Customers AS C
ORDER BY 1, c.region
現在,如果我使用一個CASE語句這樣的,我想在地區列中的NULL值的最後排序,那麼我會做這樣的事情:
SELECT
C.custid, C.region
FROM SALES.Customers AS C
ORDER BY CASE WHEN C.region IS NULL THEN 1 ELSE 0 END, C.region
在這種情況下,數字被視爲列不是順序位置,但幫助改變排列順序爲硬編碼值。
如果我的理解是正確的,爲什麼這種差異?它背後的原因?
由於
在第一種情況下,將'1'視爲值是沒有意義的,因爲它總是相同的,而case語句可能返回不同的值 – FuzzyTree