一尘不染

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

mysql

我计算带有查询的记录,例如

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遍历每一行时,它会处理所有的计数,不需要一遍又一遍地扫描整个表。


阅读 101

收藏
2022-10-13

共1个答案

一尘不染

要计算每个您可以尝试的计数

SELECT
    COUNT(CASE WHEN `col1` LIKE '%something%' THEN 1 END) AS count1,
    COUNT(CASE WHEN `col1` LIKE '%another%' THEN 1 END) AS count2,
    COUNT(CASE WHEN `col1` LIKE '%word%' THEN 1 END) AS count3
FROM `table1`; 
2022-10-13