晚上的人,
我正在尝试执行复杂的MySQL COUNT查询,并且正在寻找最佳方法。
status
)。我们有一个参考表和一个收入表 - 收入表中的每一行都指向参考reference_id
我一直在尝试做的是,使用PHP和MySQL的组合来弥合SQL(或我的知识)不足的差距:
首先,选择与每个参考相关的收入数量COUNT
:
SELECT `reference_id`, COUNT(status) AS status_count
FROM (`income`)
WHERE `income`.`status` = 0
GROUP BY `reference_id`
接下来,使用PHP生成WHERE IN
子句,继续COUNT
确认引用的数量:
SELECT `reference_id`, COUNT(status) AS status_count
FROM (`income`)
WHERE `reference_id` IN ('8469', '78969', '126613', ..... etc
AND status = 1
GROUP BY `reference_id`
然而,这不起作用。它返回0行。
有什么方法可以实现我的目标?
谢谢!
答案 0 :(得分:3)
在MySQL中,您可以对布尔表达式使用SUM()来获取该表达式为true的行的计数。你可以这样做,因为MySQL将true视为整数1,将false视为整数0。
SELECT `reference_id`,
SUM(`status` = 1) AS `validated_count`,
COUNT(*) AS `total_count`
FROM `income`
GROUP BY `reference_id`