首页 > 解决方案 > 如何将 GROUPBY 与 INNER JOIN 一起使用?

问题描述

我需要获取带有 total_of_occurance 的 company_id 和不同表中的 company_name 。我尝试了以下查询,但不知何故它抛出了一些错误。

SELECT tblhistorymaster.company_id, tblcompanymaster.company_short_name , COUNT(tblhistorymaster.company_id)
FROM tblhistorymaster
INNER JOIN tblcompanymaster ON tblcompanymaster.row_id = tblhistorymaster.company_id 
GROUP BY tblhistorymaster.company_id

经过一番搜索,我发现我无法使用 GROUP by 。获得结果的最佳方法是什么。任何建议都会有很大帮助。

标签: sqlpostgresql

解决方案


嗯。. . GROUP BY尝试在::中重复所有未聚合的列

SELECT hm.company_id, cm.company_short_name, COUNT(*)
FROM tblhistorymaster hm JOIN
     tblcompanymaster cm
     ON cm.row_id = hm.company_id 
GROUP BY hm.company_id, cm.company_short_name;

如果cm.row_id是主键或唯一的tblcompanymaster,那么你也可以使用:

SELECT cm.row_id, cm.company_short_name, COUNT(*)
FROM tblhistorymaster hm JOIN
     tblcompanymaster cm
     ON cm.row_id = hm.company_id 
GROUP BY cm.row_id;

这是有效的,因为GROUP BY密钥被声明为唯一的。


推荐阅读