【问题标题】:MySQL add count to query as columnMySQL将查询添加为列
【发布时间】:2016-01-14 05:56:41
【问题描述】:

我想运行一个查询,返回满足特定条件的每条记录,并给出我的表中出现的总次数。

所以如果我跑:

SELECT id from history where id like "%CLM%";

我从我的表中获取id 的每个实例,其中“CLM”位于id 的某个位置。我想在 NEXT 列中计算找到该特定记录的次数,但我似乎不知道该怎么做。

我正在寻找的是这样的:

╔══════╦═══════╗
║  id  ║ count ║
╠══════╬═══════╣
║ CLM1 ║     1 ║
║ CLM2 ║     5 ║
║ CLM3 ║    13 ║
╚══════╩═══════╝

我试过SELECT id, count(id) from history,但它返回:

╔══════╦══════════╗
║  id  ║ count    ║
╠══════╬══════════╣
║      ║ 12258432 ║
╚══════╩══════════╝

如何编写此查询?

【问题讨论】:

    标签: mysql sql select count


    【解决方案1】:

    如您所见,您可以使用count 函数来计算行数。但是,您缺少的部分是根据id 分解此结果,这可以通过group by 子句来完成:

    SELECT   id, COUNT(*)
    FROM     history
    WHERE    id LIKE '%CLM%'
    GROUP BY id
    

    【讨论】:

    • 啊——我会去阅读如何使用 group by 语句。这也很有效。谢谢!
    【解决方案2】:
     SELECT id, count(*)
     from history 
     where id like "%CLM%"
     GROUP BY id
    

    【讨论】:

    • 虽然这可能是一个正确的答案,但它没有提供任何解释为什么会这样,从而降低了答案的价值。
    • @keda 降低价值downvote完全不同,但这取决于你
    • 也许吧,但是这个网站既是关于教学的,也是关于答案的。 Mureinik 对同样的解决方案给出了很好的解释,这导致 Brian 去阅读 group by 声明。布赖恩将从中获得更多,而不是简单地实施解决方案而不理解它。此外,这不提供解释不会使将来寻找类似答案的人受益。
    • 正如我所说,你的权利,你的意见,你的反对意见。祝你有美好的一天
    • Brian will :) 话虽如此,我还是用赞成票反驳了反对票,因为如果您的回答是唯一的,它仍然会对我有所帮助,因为我仍然会去查看 @ 上的信息987654323@,因为那是我明显遗漏的部分。尽管添加原因的解释仍然有帮助。不过,我很感谢你的回答。
    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多