我试图让从表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的计数?
您可以使用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年逗号式连接语法停止。