我想通过以下方式对数据库查询进行排序:
考虑其他字段的字符串属性的数字值DESCENDING
类似的东西:
ORDER BY money DESC,
currency = 'EUR'
示例:
money | currency
-----------------------
200 | EUR
300 | USD
500 | USD
100 | EUR
400 | EUR
仅当money
等于currency
时,我才想对EUR
进行降序排序。我不希望在排序时考虑其他货币,例如:
money | currency
-----------------------
400 | EUR
200 | EUR
100 | EUR
300 | USD
500 | USD
我不需要在EUR
之后进行排序。可能是完全随机的
答案 0 :(得分:2)
您可以在order by
中使用多个键:
order by (currency = 'EUR') desc,
money desc
这将按降序对其余货币进行排序。那是副产品。如果您特别希望它们是随机的:
order by (currency = 'EUR') desc,
(case when currency = 'EUR' then money end) desc,
rand()
但是这似乎有点过分。
答案 1 :(得分:1)
如果您真的只希望订单条件为'EUR'值,则可以执行以下操作:
ORDER BY (currency = 'EUR') * money DESC