[英]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.