我从MySQL获取带有待办事项标题和截止日期的数组。我想按日期订购它,并且最老的。但有一些没有约会的待遇。这些待办事项我不想在第一个位置显示,而是在我的列表底部显示。不幸的是,MySQL把空的放在第一位。
我有什么方法可以在一个查询中 (不能使用MySQL,使用CI的ActiveRecord)。我可以对没有日期的所有待办事项运行第二个查询,并将它们放在底部。但我想在一个查询中进行 - 如果可能的话?
答案 0 :(得分:33)
您可以使用ORDER BY
子句在MySQL中执行此操作。先按NULL
排序,然后按日期排序。
SELECT * FROM your_table ORDER BY (date_column IS NULL), date_column ASC
注意:这假设没有日期的行是NULL
。
答案 1 :(得分:0)
是
SELECT *
FROM table
ORDER BY CASE your_date
WHEN '' THEN 'b'
ELSE 'a'
END,
date ASC
答案 2 :(得分:0)
可能在order by子句
中添加NVL( thedate, to_date('2099-12-31','yyyy-mm-dd'))
答案 3 :(得分:0)
您可以使用:
select * from my_table
order by if(isnull(my_field),1,0),my_field;
答案 4 :(得分:-1)
好吧,作为一个纯粹的MySQL答案,我可能会这样做。
select todo.title, todo.due_date
from todo
order by ifnull(todo.due_date, '9999-12-31')