有没有办法在sql中组合ORDER BY
和IS NULL
,这样如果列不为null,我可以按列排序,但如果它是null,则按另一列排序?< / p>
答案 0 :(得分:27)
类似的东西:
ORDER BY CASE
WHEN Column1 IS NOT NULL THEN Column1
ELSE Column2
END
与写作相同:
ORDER BY IFNULL(Column1, Column2)
答案 1 :(得分:8)
试试这个
ORDER BY COALESCE(fieldA, fieldB);
答案 2 :(得分:0)
您可以尝试使用以下内容:
ORDER BY ISNULL(firstField, secondField)
答案 3 :(得分:0)
我没有任何可以测试它的表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有时为空,顺序会是什么样子,看起来非常不稳定。