【问题标题】:MYSQL GROUP BY/COUNT with conditionMYSQL GROUP BY/COUNT 条件
【发布时间】:2018-01-17 12:19:20
【问题描述】:

我希望根据条件扩展一个简单的“GROUP/COUNT BY”查询,条件是只需要一定数量的行。

这是一个简单的表格。普通的“GROUP BY”会计算并返回全部行数,但我需要使用表格旁边的语句来扩展我的查询:

+-----+---------+----------+--------+ |编号 |已删除 |状态 |参考 | +-----+---------+----------+--------+ | 1 | 0 |付费 | 10001 | | 2 | 0 |付费 | 10001 | | 3 | 0 |付费 | 10001 | WHERE 状态 = 已支付 ABD id IN (2,3) //COUNT = 2 | 4 | 0 |付费 | 10002 | | 5 | 1 |猫 | 10002 | | 6 | 1 |猫 | 10002 | WHERE status = cat AND id IN (6) //COUNT = 1 | 7 | 0 |猫 | 10003 | | 12 | 0 |待定 | 10004 | | 13 | 1 |待定 | 10005 | | 14 | 1 |待定 | 10005 | | 15 | 1 |待定 | 10005 | WHERE status = pending AND id IN(12,14,17) COUNT = 3 | 16 | 0 |待定 | 10005 | | 17 | 0 |待定 | 10006 | | 18 | 0 |待定 | 10006 | | 19 | 0 |待定 | 10006 | +-----+---------+----------+--------+

在上述条件下,获得所需结果的最简单方法是什么?

+---------+---------+ |状态 |计数 | +---------+---------+ |付费 | 2 | |猫 | 1 | |待定 | 3 | +---------+---------+

【问题讨论】:

  • 使用您的查询和 SQL 更新您的帖子以进行创建和插入。另外,你得到的错误。
  • 为什么不是pending 5?我错过了什么吗?您正在寻找未删除的条目?

标签: mysql


【解决方案1】:

如果您事先知道所有所需的行,我想知道为什么要进行查询。 无论如何,一个单一的 where 条件 where id IN (2,3,6,12,14,17) 应该可以完成这项工作。所以最终的查询是

select status, count(*)
from mySimpleTable
where id IN (2,3,6,12,14,17)
group by status

【讨论】:

    【解决方案2】:

    试试这个 :::

    select status, count(*) as 'count'
    from myTable
    where (id IN (2,3) AND status= 'paid') OR
    (status = 'cat' AND id IN (6)) OR
    (status = 'pending' AND id IN(12,14,17))
    group by status
    

    【讨论】:

    • Try This(仅代码)答案在 StackOverflow 上的价值很低,因为它们在教育/授权 OP 和成千上万的未来研究人员方面做得很差。如果您打算将此答案留在页面上并希望有最佳机会为您的贡献赢得投票,请编辑您的答案以包括您的答案如何工作以及为什么它是一个好的解决方案。预先感谢您帮助使 StackOverflow 成为更有价值的资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2020-05-17
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多