我想把今天排定日期的行放在狀態 2 中,如果今天不是排定日期,我希望狀態 1、2、3 的結果基于創建時間。我怎樣才能把它放在查詢上?
這是表的示例
table1
id | scheduled_date | status | created_at
1 | null | 1 | 2021-12-20 00.00.00
2 | 2021-12-27 00.00.00 | 2 | 2021-12-19 00.00.00
3 | 2021-12-26 00.00.00 | 3 | 2021-12-23 00.00.00
4 | null | 1 | 2021-12-15 00.00.00
這是我到目前為止嘗試過的查詢
select *
from `table1`
where `status` <> 0
order by CASE WHEN date(scheduled_date) = '2021-12-27' and status = 2 then 1 END asc,
FIELD(status, 1, 2, 3) asc,
`created_at` asc
但我得到了行4,1,2,3的結果我想要行的結果2,4,1,3
任何幫助將不勝感激。我也在嘗試在 Laravel 上執行此操作,因此非常感謝其雄辯的查詢
uj5u.com熱心網友回復:
我想把今天排定日期的行放在狀態 2 中,如果今天不是排定日期,我希望狀態 1、2、3 的結果基于創建時間。
測驗這個
ORDER BY CASE WHEN DATE(scheduled_date) = '2021-12-27' AND status = 2
THEN 0
ELSE status -- or FIELD(status, 1, 2, 3)
END,
created_at
uj5u.com熱心網友回復:
我認為空值在這里造成了麻煩。你可以試試下面的
select *
from `table1`
where `status` <> 0
order by CASE WHEN date(scheduled_date) = '2021-12-27' and status = 2 then 1
ELSE 2
END asc,
FIELD(status, 1, 2, 3) asc,
`created_at` asc
uj5u.com熱心網友回復:
首先,使用布爾運算式:
DATE(scheduled_date) = '2021-12-27' AND status = 2
在ORDER BY子句中,然后簡單地status和created_at:
ORDER BY DATE(scheduled_date) = '2021-12-27' AND status = 2 DESC,
status,
created_at
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/394576.html
上一篇:當按下ENTER時,按鈕單擊未擊中OnPost()方法
下一篇:如何格式化關系日期?
