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个表并计数的主要内容,如果未能解决你的问题,请参考以下文章