[英]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.