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

数字值DESCENDING考虑其他字段的String属性

就像是:

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之后进行排序。可能是完全随机的

最佳答案

您可以在order by中使用多个键:

order by (currency = 'EUR') desc,
         money desc


这将以降序排列其余货币。那是副产品。如果您特别希望它们是随机的:

order by (currency = 'EUR') desc,
         (case when currency = 'EUR' then money end) desc,
         rand()


但这似乎太过分了。

关于mysql - SQL条件分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51022988/

10-11 14:04