如果Column1不为null,则按Column1排序,否则按Column2排序

时间:2012-06-12 19:22:47

标签: sql postgresql sql-order-by

有没有办法在sql中组合ORDER BYIS NULL,这样如果列不为null,我可以按列排序,但如果它是null,则按另一列排序?< / p>

4 个答案:

答案 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有时为空,顺序会是什么样子,看起来非常不稳定。