sql - COUNT 与 SELECT by IF 条件
问题描述
如果它们真的相等,我正在寻找两个 sql 查询的计数
SELECT c.name,
count ( IF (
(SELECT count(*) FROM catey_content cm WHERE cm.sid = c.id AND cm.state = 1)
=
(SELECT count(*) FROM catey_content_comp cmc WHERE cm.sid = c.id AND cmc.state BETWEEN 1
AND 10)
)
) AS "completed"
FROM category_it c GROUP BY c.name
解决方案
如果你想检查一些条件,你可以使用 where 子句,也可以在子查询上使用 join
SELECT c.name, "completed"
FROM category_it c
INNER JOIN (
SELECT sid, count(*) count_cm
FROM catey_content cm WHERE cm.state = 1
GROUP BY sid
) t1 on t1.sid = c.id
INNER JOJN (
SELECT sid, count(*) count_cmc
FROM catey_content_comp cmc
WHERE cmc.state BETWEEN 1 AND 10
GROUP BY sid
) t2 on t2.sid = c.id
WHERE t1.count_cm = t2.count_cmc
推荐阅读
- node.js - 如何使用 TypeORM 实体建模追随者系统
- javascript - 考虑到它们不是同质的,如何在内存中布置无类型的 javascript 数组?
- dialogflow-es - 在 Facebook Messenger 中更改 Dialogflow 聊天机器人语言
- python - 使用带有 Python 的 Gmail API 回复电子邮件
- android - Android Studio 中未启动守护程序
- c - 无法使用 libpcap 捕获数据包
- javascript - 在 JavaScript 中查找多维 JSON 对象的不同级别的重复值
- odoo-10 - 更新“现有数量”文件导入 odoo 10e
- css - 如何使眼睛图标的位置响应
- python - Tensorflow 1.13.1 tf.data 将多张图像与单行映射在一起