表裡有三個欄位 id,create_at,status 【id 為編號,自增 ,create_at 為建立時間 ,status 為狀態】
我想做的是 先按 狀態升序排序, 當狀態值為 2 時,按create_at 降序,狀態值為 3 時按create_at 升序。
網上搜尋 過,看到了case when 的寫法。 自己嘗試過,沒整出來,還請各位高手幫忙,非常感謝。
回複討論(解決方案)
可以把查詢的order 寫成一個變數 根據status去給order 賦值
可以把查詢的order 寫成一個變數 根據status去給order 賦值
那麼問題來了,究竟是怎麼寫叱?
可以把查詢的order 寫成一個變數 根據status去給order 賦值
那麼問題來了,究竟是怎麼寫叱?
就是拼接where條件
可以把查詢的order 寫成一個變數 根據status去給order 賦值
那麼問題來了,究竟是怎麼寫叱?
就是拼接where條件
一 非常感謝你。
二 希望你以後在協助人的時候,可以給出更具體方法。 我自己感覺這個例子,欄位已準備得足夠簡單的。
談處理方法 ,我自己也瞭解一些,有時候,就是一些文法,等q/a 問題卡住了,希望有更直接的協助。
三 剛才自己把這個問題給折騰出來了。我是這樣解決的。
SELECT * FROM table_name
ORDER BY STATUS ASC, CASE STATUS WHEN 2 THEN create_at ELSE -create_at END DESC;
.... order by status, case when status=2 then create_at end desc, case when status=3 then create_at end
我喜歡這樣寫
.... order by status, if(status=2,create_at,‘’) desc, if(status=3,create_at,‘’)
.... order by status, case when status=2 then create_at end desc, case when status=3 then create_at end
我喜歡這樣寫
.... order by status, if(status=2,create_at,‘’) desc, if(status=3,create_at,‘’)
非常感謝 ,很有收穫。