首页 > 解决方案 > 计算行数使用类似mysql的条件

问题描述

我有一个包含书籍列表的表格。我想计算其中包含“mysql php”的行数。

如果我使用常规类似(使用下面的代码),它只计算带有'mysql php'的行。

SELECT 'mysql php' as searched_word, 
        count(case when book_list like '%mysql php%' then 1 else 0 end) AS number_of_occurrences
FROM book_list

我想要的是,它还计算具有“php mysql”值的行,但我不知道该怎么做。

这是表格:

+------------------------+
| book_list              |
+------------------------+
| mysql php for dummies  |
+------------------------+
| learn php mysql        |
+------------------------+
| mysql php for students |
+------------------------+
| mysql database         |
+------------------------+

我的预期结果:

+---------------+-----------------------+
| searched_word | number_of_occurrences |
+---------------+-----------------------+
| mysql php     | 3                     |
+---------------+-----------------------+

标签: mysql

解决方案


将条件设为or, 并使用sum()(not count()):

select
    'mysql php' as searched_word, 
    sum(book_list like '%mysql php%' or book_list like '%php mysql%') AS number_of_occurrences
from book_list

注意 MySQL 允许更简短的代码计算条件的方式,因为 'true' 是 '1' 而 'false' 是 '0'。


如果您想计算在某处同时包含这两个"learn php and mysql"术语的行,例如,请使用:

sum(book_list like '%php%' and book_list like '%mysql%')

推荐阅读