SQL 如果有价值,按列排序
SQL Order By Column If It Has Value
我有以下 table:
对象 (o)
id name date_completed
----------------------------------------
1 Computer 2016-02-26
2 Desk NULL
3 Curtain 2016-02-25
我尝试使用这个查询:
SELECT * FROM objects ORDER BY date_completed NULLS FIRST, name
正如预期的那样,我得到了这个结果:
id name date_completed
----------------------------------------
2 Desk NULL
3 Curtain 2016-02-25
1 Computer 2016-02-26
我希望对结果进行排序,使其不按实际日期排序,而是将带有 NULL
的结果放在顶部的 date_completed
中,然后按姓名。然后把有值的放在最下面的date_completed
里,也按名字排序
基本上这就是我想要得到的:
id name date_completed
----------------------------------------
2 Desk NULL
1 Computer 2016-02-26
3 Curtain 2016-02-25
SELECT * FROM objects
ORDER BY (case when date_completed is null then 1 else 2 end),name
我有以下 table:
对象 (o)
id name date_completed
----------------------------------------
1 Computer 2016-02-26
2 Desk NULL
3 Curtain 2016-02-25
我尝试使用这个查询:
SELECT * FROM objects ORDER BY date_completed NULLS FIRST, name
正如预期的那样,我得到了这个结果:
id name date_completed
----------------------------------------
2 Desk NULL
3 Curtain 2016-02-25
1 Computer 2016-02-26
我希望对结果进行排序,使其不按实际日期排序,而是将带有 NULL
的结果放在顶部的 date_completed
中,然后按姓名。然后把有值的放在最下面的date_completed
里,也按名字排序
基本上这就是我想要得到的:
id name date_completed
----------------------------------------
2 Desk NULL
1 Computer 2016-02-26
3 Curtain 2016-02-25
SELECT * FROM objects
ORDER BY (case when date_completed is null then 1 else 2 end),name