ORDER BY 依序套用每個排序鍵,前一鍵值相同才比較下一鍵。每鍵可獨立指定 ASC(預設,遞增)或 DESC(遞減)。
-- 1. 兩欄皆升冪 ORDER BY col1, col2; -- 等同於 ORDER BY col1 ASC, col2 ASC; -- 2. 第一欄升冪、第二欄降冪 ORDER BY col1, col2 DESC; -- 等同於 ORDER BY col1 ASC, col2 DESC; -- 3. 第一欄降冪、第二欄升冪 ORDER BY col1 DESC, col2; -- 等同於 ORDER BY col1 DESC, col2 ASC; -- 4. 兩欄皆降冪 ORDER BY col1 DESC, col2 DESC;
-- 員工:依部門代碼升冪,同部門內依薪資降冪 SELECT empid, deptid, salary FROM HR.Employees ORDER BY deptid ASC, salary DESC;
ASC/DESC 僅作用於緊鄰的前一欄位,不會「繼承」給後續欄位。TOP/OFFSET-FETCH 時,ORDER BY 決定哪幾列被選取,順序務必確定。NULL 排序:ASC 時 NULL 在前,DESC 時在後(SQL Server 預設行為)。ORDER BY YEAR(hiredate), MONTH(hiredate) 合法,但無法使用索引,大量資料建議改用計算欄位+索引。