1. 程式人生 > 其它 >SQL語句 ORDER BY 多條件排序優先順序(巢狀if語句)

SQL語句 ORDER BY 多條件排序優先順序(巢狀if語句)

技術標籤:資料庫sql多條件排序優先順序order bymysql

需求

需求是,先根據A欄位排序,排好序後得到一系列結果。然後再根據得到的結果根據B欄位排序,得到最終結果。

按照這樣排好序的順序是這樣的:把符合條件的單獨幾行,可以放在查詢結果的開始,或者查詢結果的尾部。

舉個例子:

現在有一張部落格表,我想先根據id排好序,然後再根據是否推薦(recommend欄位為1就是推薦,0就是不推薦)排序。最後期望排序結果如下圖所示:
在這裡插入圖片描述
可以看到,兩者都進行了排序,但是優先順序是 recommend > id。

SQL程式碼

廢話不多說直接上程式碼:

SELECT
    b.`title`
,b.`id`,b.`recommend` FROM t_blog b ORDER BY IF (b.`recommend`='1',0,1),b.`id` DESC

就是使用ORDER BY配合IF語句

這裡需要注意:

IF (b.recommend=‘1’,0,1),b.id

這句話的意思是,我對id進行排序的同時,給id附加一個隱藏屬性,這個隱藏屬性,可以是0或者1

什麼意思呢?就是在對id排序的時候,優先順序是判斷recommend是否為1,如果是,返回0,如果不是,返回1.

隨後,先進行recommend屬性的排序,隱藏屬性拍完以後,再進行剩餘id的排序,最終得到排序結果

本文部分參考:MySQL ORDER BY IF() 及多條件排序