mysql - 条件分组 sql 查询

标签 mysql sql

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

考虑到来自另一个字段的 String 属性,数值降序

类似于:

ORDER BY money DESC,
currency = 'EUR'

例子:

money    |     currency
-----------------------
200      |     EUR
300      |     USD
500      |     USD
100      |     EUR
400      |     EUR

仅当 currency 等于 EUR 时,我才想对 money 进行降序排序。我不希望在排序时考虑其他货币,例如:

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/

相关文章:

mysql - MySQL 的唯一索引

sql - OPENQUERY 中的变量 "Deferred prepare could not be completed"错误

mysql - 在 mysql 中创建 date_from 和 date_to 列

mysql - 通过分组依据和限制选择n个数据

mysql - 是否可以将纬度/经度 mysql 多边形的边界扩展 x 英里或公里?

MySQL选择24小时内不需要得分轨迹行的不同玩家

mysql - 如何在 Spring MVC 中使用 SQL 实现审计跟踪?

php - 带有 zend 框架的 IN() 子句中的多列

sql - 如何在 postgres 中查询 "name"

MySQL连接不同的表