有 3 个表:table_A{id, table_b_id, table_c_id}
、table_B{id,..}
和 table_C{id}
我使用左连接来获取所有 A,并与 table_B.id 连接。
我需要的是添加 table_C 中的项目计数。
我不想用子查询来做到这一点,可以吗?
查询:
SELECT table_A.*
FROM table_A
LEFT JOIN table_B
ON table_B.id = table_A.table_b_id
WHERE table_A.{field} = {condition}
GROUP BY table_A.{some_field}
最佳答案
尝试
SELECT table_A.*,
COUNT(table_C.id) count_of_c
FROM table_A
LEFT JOIN table_B
ON table_B.id = table_A.table_b_id
LEFT JOIN table_C
ON table_C.id = table_A.table_c_id
WHERE table_A.{field} = {condition}
GROUP BY table_A.{some_field}
旁注:虽然 MySql GROUP BY
扩展允许您将不属于 GROUP BY
一部分的列放入 SELECT
中,但不要这样做不要这样做,因为无法知道在组中选择哪一行。因此,您的 SELECT
子句应类似于
table_A.{some_field}, <Aggregate function>(table_A.{other_field})...
或者您必须将聚合结果与 table_A 连接。
关于mysql - LEFT JOIN 表 B 与表 C 的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050405/