請教一個查詢

來源:互聯網
上載者:User
表裡有三個欄位 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,‘’)



非常感謝 ,很有收穫。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.