代码之家  ›  专栏  ›  技术社区  ›  krzakov

按SQL查询的条件组

  •  0
  • krzakov  · 技术社区  · 7 年前

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

    考虑到另一个字段的字符串属性,数值降序

    类似于:

    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
    

    我不需要整理后 欧元 是的。可能是完全随机的

    2 回复  |  直到 7 年前
        1
  •  2
  •   Gordon Linoff    7 年前

    您可以在 order by 以下内容:

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

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

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

    但这似乎有点过头了。

        2
  •  1
  •   A. Colonna    7 年前

    如果您真的只想要“欧元”价值的订单条件,您可以这样做:

     ORDER BY (currency = 'EUR') * money DESC