sql - 如何在 SQL 中使用 JOIN 从另一个表中计数用户?
问题描述
我有 3 张桌子,我加入了 2 张桌子,所以我得到了一些东西,我们称之为 Table1 这有时会重复,因为信息填写错误
company_id | 公司名称 | 地点 |
---|---|---|
1 | 一个 | |
1 | 一个 | X |
2 | 乙 | 是 |
3 | C1 | Z |
3 | C | Z |
现在我还有另一个表,每个公司都有用户,称之为 Table2
company_id | 用户身份 |
---|---|
1 | 万维网 |
2 | dfsg |
2 | 达斯达 |
3 | 时尚 |
3 | 伤心 |
我想加入这些表并获得一个计算每个 company_id 中用户的表(重复重复)
company_id | 公司名称 | 地点 | 用户计数 |
---|---|---|---|
1 | 一个 | 1 | |
1 | 一个 | X | 1 |
2 | 乙 | 是 | 2 |
3 | C1 | Z | 2 |
3 | C | Z | 2 |
知道怎么做吗?
这是我第一次加入表 1,我将如何编辑它以获得最终表
SELECT clg.company_id, clg.name, c.location_address FROM clg, c
WHERE clg.company_id = c.id
解决方案
我建议使用子查询,而不是JOIN
:
select t1.*,
(select count(*)
from table2 t2
where t2.company_id = t1.company_id
) as num_users;
from table1 t1;
如果您有心JOIN
,那么在加入之前进行汇总:
select t1.*, t2.num_users
from table1 t1 join
(select company_id, count(*) as num_users
from table2 t2
group by company_id
) t2
on t1.company_id= t2.company_id;
推荐阅读
- php - 为什么我的 var_dump() 仅在函数外使用时才显示?
- c# - SqlException:对象名称“dbo.TblDepartments”无效。表名复数
- scala - Akka HTTP:ByteString 作为表单数据请求中的文件有效负载
- maya - 导入 fbx 表单 3dmax 后在 Maya 中删除属性
- java - 使用 hibernate 或 JPA 获取过程输出的列名称
- javascript - 从 DynamoDB 表中获取最新值
- angular - 表单数组值改变角度
- python - | 不在 Subprocess.call 中工作
- node.js - NodeJS - 我可以“释放”一个必需的模块吗?
- php - 如何将查询结果从结果页面传递到不同的 php 页面