2010-11-16 69 views
0

我有一個型號Pupil,其中有score。我需要用奇怪的規則列表:順序按分數(DESC),但超過100個應責令爲零所有得分​​(!):特定訂單(sql)

Pupil.all(:order => 'score DESC' ...?) 
100 
86 
34 
21 
6 
3 
1 
0 
143 
125 
354 
0 
456 
0 
0 

我可以使用紅寶石訂購它,但我需要的sql

ASLO我可以創建數據庫附加字段,用於存儲像
new_score = score > 100 ? 0 : score
數據,但我認爲我們可以讓SQL沒有它

+0

什麼數據庫您使用的? – 2010-11-16 10:29:18

+0

MySQL,sqlite3。 – fl00r 2010-11-16 10:30:54

回答

4

你可以做爲了「分數> 100」(訂購布爾) ,然後按順序排列得分了。所有得分> 100的人都會被布爾預先排序,並且子順序會在> 100之後排列其他得分。

我希望這是不夠清楚,你是按分數> 100,得分降序尋找:)

+0

太棒了!謝謝 – fl00r 2010-11-16 10:45:09

+3

請注意,在每個數據庫中,布爾值的排序可能不同。如果您編寫完整的內容,您可能會更安全:'當得分> 100時得到ORDER BY CASE ELSE 0 END'(如果您的數據庫瞭解它) – Arsen7 2010-11-16 11:29:25

4

SELECT * FROM學生爲了