首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在一个查询中进行多次计数?

如何在一个查询中进行多次计数?
EN

Database Administration用户
提问于 2012-08-24 09:37:19
回答 2查看 107.6K关注 0票数 15

我用如下的查询来计数记录

代码语言:javascript
运行
复制
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%something%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%another%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%word%'

对于每个计数,mysql需要遍历表,如果有长表和大量查询,这将是一个大问题。

我想知道是否有办法在一个查询中进行所有计数。在这种情况下,当mysql遍历每一行时,它将处理所有计数,不需要一遍又一遍地扫描整个表。

EN

回答 2

Database Administration用户

发布于 2012-08-25 03:34:58

类似于Aaron的解决方案,语法更短:

代码语言:javascript
运行
复制
SELECT
    SUM(col1 LIKE '%something%') AS count1,
    SUM(col1 LIKE '%another%') AS count2,
    SUM(col1 LIKE '%word%') AS count3
FROM `table1`

类似的表达式构成布尔结果。TRUE是1,FALSE是0,所以CASE在这里是多余的。

票数 18
EN

Database Administration用户

发布于 2012-08-24 11:43:00

如果我把你的需求做对了,这也许会有效果:

代码语言:javascript
运行
复制
SELECT SUM(CASE 
  WHEN col1 LIKE '%something' THEN 1 
  WHEN col1 LIKE '%another%' THEN 1 
END) AS result
FROM table1;
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/23068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档