【问题标题】:How can I LIMIT on various WHERE clauses in MySQL?如何限制 MySQL 中的各种 WHERE 子句?
【发布时间】:2011-09-11 09:51:52
【问题描述】:

假设我有以下 MySQL 表:

编号 |物种 ------------ 1 |狗 2 |狗 3 |狗 4 |猫 5 |猫 6 |鱼 7 |鱼 8 |鱼

我想获取 2 条狗、1 条猫和 1 条鱼的 ID(它们不必按顺序排列)。例如,{1, 2, 4, 6} 将是有效的输出。

有没有办法在一个 SQL 查询中做到这一点?据我所知, LIMIT 是一个相当简单的运算符,不能做到这一点。也许 WHERE 可以被操纵?或者多个 SQL 查询是最好的方法吗?

【问题讨论】:

    标签: mysql sql where-clause


    【解决方案1】:

    据我所知,你能做的最好的事情是使用UNION 组合三个SELECTs 的结果,例如:

    SELECT id, species FROM animals
      WHERE species = 'dog'
      LIMIT 2
    UNION
    SELECT id, species FROM animals
      WHERE species = 'cat'
      LIMIT 1
    UNION
    SELECT id, species FROM animals
      WHERE species = 'fish'
      LIMIT 1;
    
    # Producing:
    #
    # id | species
    # ---+--------
    #  1 | dog
    #  2 | dog
    #  4 | cat
    #  6 | fish
    

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2023-01-20
      • 1970-01-01
      • 2013-07-31
      • 2013-07-30
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多