有没有一种方法可以在 sql 中组合ORDER BY
和IS NULL
,以便如果列不为空,我可以按列排序,但如果为空,则按另一列排序?
问问题
17356 次
4 回答
47
就像是:
ORDER BY CASE
WHEN Column1 IS NOT NULL THEN Column1
ELSE Column2
END
和写法一样:
ORDER BY COALESCE(Column1, Column2)
两者都应该在任何健全的 RDBMS 中工作。
于 2012-06-12T19:25:03.673 回答
13
尝试这个
ORDER BY COALESCE(fieldA, fieldB);
于 2012-06-12T19:28:44.353 回答
0
您可以尝试以下方法:
ORDER BY ISNULL(firstField, secondField)
于 2012-06-12T19:24:49.333 回答
-1
我没有任何可以测试它的 Tables atm,但这可能有效,至少它在没有可用数据的情况下有效:
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE 1
ORDER BY IF( table2.id, table1.id, table1.name )
另外我不知道如果 table2.id 有时为空,订单会是什么样子,看起来很不稳定。
于 2012-06-12T19:34:38.347 回答