[英]Order by first non-null result that comes from two different columns
我想瀏覽表中兩列的所有值:
我嘗試了以下查詢,但它不起作用,我什至不確定它是否應該做我想做的事情。
SELECT *
FROM table
ORDER BY (CASE WHEN col1 IS NOT NULL THEN 1 ELSE 2 END ),
col1 DESC,
col2 DESC)
除了它不起作用(沒有輸出)這一事實之外,它似乎對每一列的值分別進行排序,而我想對檢索到的最終值集進行排序,而不管它們來自哪一列。
謝謝您的幫助。
如果你想用CASE
表達式修復它,它看起來像下面這樣:
SELECT *,
CASE WHEN col1 IS NOT NULL
THEN col1
ELSE col2
END AS col
FROM table
ORDER BY col
雖然一個不錯的選擇是使用COALESCE
function。它返回 arguments 列表中的第一個非空值。
SELECT *, COALESCE(col1, col2) AS col
FROM table
ORDER BY col
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.