【发布时间】:2014-06-30 11:27:50
【问题描述】:
我有一个包含以下相关字段的会议表:
- 会议名称(文字)
- 提交截止日期(日期)
- 通知日期(日期)
- 活动开始(日期)
- 活动结束(日期)
我想查询所有活动结束时间大于今天的会议,并排序如下:
- 首先,通知在未来的所有会议;在通知日期之前订购这些。
- 那么,通知过去的所有会议;按事件开始排序。
我试过了:
(SELECT * FROM conferences
WHERE ev_end >= '2014-06-30'
AND notification >= '2014-06-30'
ORDER BY notification ASC)
UNION
(SELECT * FROM conferences
WHERE ev_end >= '2014-06-30'
AND notification < '2014-06-30'
ORDER BY ev_start ASC);
但它不起作用,排序不正确。事实上,我根本看不出任何排序:当我省略两个 ORDER BY 子句时,结果的排序方式完全相同(即看起来是随机的)。
是否可以通过一个 SQL 查询来实现这一点?还是我必须进行两个单独的查询?
我知道这个问题:Conditional sorting in MySQL?,但我的情况完全不同。
【问题讨论】:
标签: mysql sorting sql-order-by