mysql - LEFT JOIN 表 B 与表 C 的行数

标签 mysql count left-join

有 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/

相关文章:

mysql - MySQL 可以支持每个连接的并发查询吗?

mysql - 如何获取mysql中同一张表的计数值为零?

MySql 查询连接

javascript - 如何在 HTML 中显示此代码?

mysql - 多个左连接

mysql join查找 "missing" "related"行

php - 价格显示超过 2 位小数?

mysql - 在 SQL 中出现错误 "No matching Unique or Primary key for the Column List"

mysql Nodejs connection.query like 运算符错误

excel - Excel 2010 中的细胞计数公式