我正在尝试按最低值对列进行排序,但如果值为0
,那么我希望所有具有该值的列都放在最后而不是开头。
可以这样做吗?
刚才说查询是..
SELECT * FROM auctions ORDER BY a.discount_start_date ASC
有没有一种方法可以让我做我想做的事情?
答案 0 :(得分:1)
在order by中使用case语句,这样如果值为0,则将其设置为该字段的最大可能值,否则返回该字段的值。
答案 1 :(得分:1)
在列ORDER BY FIELD
上尝试a.discount_start_date
。
示例:
SELECT * FROM auctions
ORDER BY FIELD( a.discount_start_date, '0000-00-00'), a.discount_start_date;
在discount_start_date
列中具有零日期的所有记录都放在最后,其余的按升序排序并放在顶部。
答案 2 :(得分:1)
您可以使用:
SELECT * FROM auctions
ORDER BY
CASE WHEN a.discount_start_date = 0 THEN 0 ELSE 1 END CASE DESC,
a.discount_start_date ASC;
我建议您为数据使用适当的数据类型。