我试图订购退货套装,但我很难让它正确订购。
我选择字段,每个字段都有date_updated
和date_added
。
添加字段时,date_updated
为空,直到有更新,然后分配当前日期。
我需要通过将最近的条目放在BOTTOM上来排序我的列表,并将最旧的条目放在顶部。所以如果添加一个项目,它应该直接到底部。有没有办法将所有日期字段连接在一起,然后按最旧到最新排序,忽略更新或添加?
这可能听起来有些令人困惑,但我已经尝试过ORDER BY date_added DESC, date_updated ASC
这样的事情的多种组合,但它并没有做我需要它做的事情。我得到date_added
排序的顶部,然后是date_updated
的单独排序......
任何输入在这里都会非常有用......
答案 0 :(得分:4)
答案 1 :(得分:1)
您可以尝试CASE声明
SELECT
firstname,
lastname,
date_added,
date_updated,
CASE date_updated IS NULL
THEN date_added
ELSE date_updated
END CASE AS order_date
FROM mytable
ORDER BY order_date DESC
这样做是检查date_updated
是否为空,然后在新列中放入date_added
的值。如果没有,它会放置date_updated
。新列名为order_date
,用于排序。
您还可以在ORDER BY子句中添加CASE语句,但这可能会降低查询速度,因为它必须在索引与构造数据时进行连接。虽然没有定论,但如果在SELECT与ORDER BY中使用CASE,我发现性能略有提升。
答案 2 :(得分:0)
在CASE
条款中使用Order By
。
ORDER BY CASE WHEN date_updated IS NULL
THEN 0
ELSE 1
END DESC, date_added DESC
答案 3 :(得分:0)
Order by IsNull(DateUpdated,DateAdded)
将是一种方式