在一个表计数记录在其他表匹配条件

问题描述 投票:0回答:1

我试图让从表1匹配表2中的类别,其中记录的计数。

表看起来是这样的,例如:

ID     A          
1      value1   
2      value2
3      value3
4      value2

ID     A        Category
1      value1   Category1
2      value2   Category1
3      value3   Category2

现在,让我们说,我希望计算表1属于组别记录

查询我想出了:

SELECT count(table1.A) as count, table2.Category from table1, table2 
WHERE table2.Category = 'Category1' AND table1.A = table2.A
GROUP BY table2.Category
ORDER BY count DESC

预期结果:

Category1  3

我得到的结果是:

Category1  6

计数为A出现在表1倍的次数A出现在表2的次数。我也尝试了LEFT JOIN,但是这给了我同样的结果。

我怎样才能避免这种情况,只是得到表1的计数?

mysql sql
1个回答
1
投票

您可以使用COUNT(DISTINCT),以减少它的票,只要你使用你所知道的是在表1中唯一的列。

SELECT COUNT(DISTINCT table1.id) as count, table2.Category 
FROM table1 JOIN table2 ON table1.A = table2.A 
WHERE table2.Category = 'Category1'
GROUP BY table2.Category
ORDER BY count DESC

P.S:注意:我也改变了这种利用现代JOIN语法。这不是必需的解决方案,但它的时候,我们用1989年逗号式连接语法停止。

© www.soinside.com 2019 - 2024. All rights reserved.