mysql加入3个表并计数

Posted

技术标签:

【中文标题】mysql加入3个表并计数【英文标题】:mysql join 3 tables and count 【发布时间】:2011-02-01 12:58:38 【问题描述】:

请看这张图片

这里有 3 张桌子,我想要的是

来自 table1 的 uid 同uid表3中的行业 相同uid的表2中的fid计数

在示例示例中输出将是 2 条记录

谢谢

【问题讨论】:

到目前为止你做了什么,你目前的尝试有什么问题? 我尝试了许多 sql 语句,但无法让它们工作。我尝试加入,inner jon 等我也在互联网上搜索但没有得到任何答案。 【参考方案1】:

我看不出与表 1 有任何关系。下面是一个在两个表之间使用内部联接并按 uid 分组的示例:

SELECT 
  t3.uid, 
  t3.industry, 
  count(t2.fid) 
FROM 
  table3 t3 
INNER JOIN 
  table2 t2 ON t3.uid = t2.uid 
GROUP BY 
  t3.uid

【讨论】:

我同意这个答案,这里不需要加入表1。您可以使用 t3.uid 和 t2.uid 加入他们,并获取所需的所有信息。 虽然我通常同意这个答案,但额外的 JOIN 可能会过滤掉 UID 不在 Table1 中的行。此外,为了使显示的查询正确,group by 也应包含t3.insdustry【参考方案2】:

试试这个:

SELECT table1.uid,table3.industry,COUNT(table2.fid) 
FROM table1 
INNER JOIN table3 ON table1.uid=table3.uid
INNER JOIN table2 ON table1.uid=table2.uid
GROUP BY table1.uid, table3.industry

Table1 内连接没用,但如果您需要检索 city 或 mem_no,它可能会很有用; 在这种情况下,请记住在 GROUP BY 子句中也添加该字段。

【讨论】:

以上是关于mysql加入3个表并计数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL INNER JOIN 3 个表的计数和总数

使用codeigniter加入3个表并显示它

加入 2 个表并在 codeigniter 中对条件求和

EF Core 左连接计数

mysql连接和计数字段值

SQL max 涉及 3 个表的计数