【发布时间】:2016-04-25 13:35:36
【问题描述】:
我正在尝试从按特定排序的 MySQL 表中选择数据。 为简单起见,我们假设有 3 列:
ID Priority ValidDate
1 5 2016-12-12
2 5 2016-03-11
3 0 null
4 0 null
5 0 2016-08-01
6 6 2016-12-31
我想要的是将输出排序如下:
如果 ValidDate > curdate(),按 ValidDate desc 显示第一顺序(不考虑优先级)
如果 ValidDate 为 null 或 ValidDate
所以对于上表,输出应该是这样的:
ID Priority ValidDate
6 6 2016-12-31
1 5 2016-12-12
5 0 2016-08-01
3 0 null
4 0 null
2 5 2016-12-31
我试过这个查询:
SELECT id, image, campaignid, priority, sponsored FROM au_hpbanner order by (sponsored > curdate()) desc, (case when sponsored < curdate() then priority end) asc;
但它不起作用,因为行 ID 2 仍然在 ID 5 之后,尽管它应该在底部。 感谢您的帮助!
【问题讨论】: