SQL条件分组

时间:2018-06-25 11:58:41

标签: mysql sql

我想通过以下方式对数据库查询进行排序:

考虑其他字段的字符串属性的数字值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之后进行排序。可能是完全随机的

2 个答案:

答案 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