mysql - 计算行数使用类似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 |
+---------------+-----------------------+
解决方案
将条件设为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%')
推荐阅读
- ios - Flutter / FCM 通知未到达 Codemagic iOS 版本
- python - 在python中获取字典的一部分
- tree - 具有标记为 Y、Y、Z 的 3 个节点的不同有序树的数量是?
- postgresql - EF Core postgresql 字符串比较(不区分大小写)
- sed - Sed - 如何删除运行命令后显示的多余字符?
- android - 如何在 JetpackCompose 中将 ImageVector 转换为 ImagePainter?
- jinja2 - 如何有条件地将 null 作为 cookiecutter 提示中的默认值?
- ansible - 在 Ansible 中运行需要批准的脚本
- python - 在 Python 中将字符串解析为整数时出现问题
- python - 如何在 Python 中将换行符写入 UTF-16 BE 中的文件?