我無法爲我工作。MySQL通過CASE訂購
ORDER BY cl.name ASC');
我必須更改爲:
ORDER BY CASE cl.name WHEN "Nameone" THEN 0 WHEN "Nametwo" THEN 1 ELSE 2 END ASC
我得到的結果
1. Nameone
2. Nametwo
(其餘的,但它不是按名稱從AZ排列,但它顯示我認爲ID)
那麼如何使剩餘結果由cl.name ASC命令?
我無法爲我工作。MySQL通過CASE訂購
ORDER BY cl.name ASC');
我必須更改爲:
ORDER BY CASE cl.name WHEN "Nameone" THEN 0 WHEN "Nametwo" THEN 1 ELSE 2 END ASC
我得到的結果
1. Nameone
2. Nametwo
(其餘的,但它不是按名稱從AZ排列,但它顯示我認爲ID)
那麼如何使剩餘結果由cl.name ASC命令?
只需添加排序,以您的ORDER BY
條款的第二個層次:
ORDER BY
CASE WHEN cl.name = 'Nameone' THEN 0
WHEN cl.name = 'Nametwo' THEN 1
ELSE 2 END,
cl.name -- add this sort condition
注意添加cl.name
作爲第二排序條件將對其中名稱爲Nameone
或Nametwo
記錄中沒有任何影響,因爲這個名字是這些記錄總是相同的。
在MySQL中,你可以使用field()
功能,如果你喜歡:
order by field(c1.name, 'Nametwo', 'NameOne') desc,
c1.name
的參數是按相反的順序,因爲如果找不到field()
默認爲0的字符串。
你可以像這樣改變你的ORDER BY子句。
ORDER BY CASE cl.name WHEN 'Nameone' THEN '0' WHEN 'Nametwo' THEN '1' ELSE CONCAT('2', COALESCE (cl.name,'')) END ASC
雙引號「''的意思是字段名,單引號(')的意思是字符串。你需要什麼? –
哪一個順便說一句,你不需要ASC,這是默認的選項。 –