[英]Order by multiple columns with multiple conditions
我有一张桌子,上面有一些这样的事件
id----------title-----------date-------------status
1-----------birthday-------2018-03-12--------1
2-----------match----------2018-03-13--------2
3-----------anniversary----2018-03-10--------1
4-----------trip-----------2018-03-15--------1
5-----------birthday-------2018-03-17--------2
6-----------birthday-------2018-03-11--------1
预期结果
id----------title-----------date-------------status
1-----------birthday-------2018-03-12--------1
4-----------trip-----------2018-03-15--------1
5-----------birthday-------2018-03-17--------2
2-----------match----------2018-03-13--------2
6-----------birthday-------2018-03-11--------1
3-----------anniversary----2018-03-10--------1
我需要像日期比今天大的前几行一样查询它,状态为1应该首先出现,然后其余的在desc中出现。
假设今天是2018年3月11日,则ID为1的行应首先出现,然后其余的行按desc顺序排列
到目前为止,这是我尝试过的
SELECT *
FROM events
ORDER BY (date > CURDATE() and status = 1) asc,
date desc
您可以按以下order by
使用多个键:
order by (date >= curdate() and status = 1) desc,
date desc
我相信您的SQL应该是这样的,但是如果没有预期的结果很难说。
询问
SELECT
*
FROM
[table]
WHERE
date > CURDATE()
AND
status = 1
ORDER BY
date ASC
LIMIT 1
UNION
SELECT
*
FROM
[table]
WHERE
id NOT IN (
SELECT
id
FROM
[table]
WHERE
date > CURDATE()
AND
status = 1
LIMIT 1
)
AND
date > CURDATE()
ORDER BY
date DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.