2010-10-11 39 views
2

我有以下代碼:MySQL的排序列表質詢

SELECT q21coding, COUNT(q21coding) AS Count 
FROM  `tresults_acme` 
WHERE  q21 IS NOT NULL AND q21 <> '' 
GROUP BY q21coding 
ORDER BY Count DESC 

它帶回了以下內容:

q21coding         Count 
Difficulty in navigating/finding content  53 
Positive comments       28 
Suggestions for improvement     14 
Inappropriate content/use     13 
Improve search facility      6 
Include information about staff and teams  5 
Content needs updating      4 
Other          30 

你會發現,對方是第二個下 - 有一種方式無論計數大小如何,確保Other始終位於底部?

感謝,

荷馬

回答

5
ORDER BY IF(q21coding = 'Other', 1, 0) ASC, Count DESC 
+0

完美 - 謝謝!!!!! – 2010-10-11 09:13:27

+0

對不起,但進一步擴大 - 如果我需要底部兩個始終是正面評論,然後是其他 - 這是可能的嗎? – 2010-10-11 09:43:18

0

是,添加人工場爲1的 「其他」 和0爲別的。 然後做「ORDER BY dummy,Count」。

1

@reko_t's answer是有效的,但實際上沒有必要使用IF()功能。

在MySQL中,你可以使用任何表達的ORDER BY caluse和q21coding = 'Other'就足夠了:如果是真的

... ORDER BY q21coding = 'Other', Count DESC 

q21coding = 'Other'表達式將返回1,或0如果假的。這將把q21coding = 'Other'的行放在最下面。