SQL有计数 - 不工作

时间:2013-04-04 12:27:40

标签: sql

我有一个标签表。该表中针对此问题的相关行是:tag_id和taggable_id。我想选择一个包含所有tag_id的taggable_id。 但是这个查询是空的:

SELECT taggable_id, 
       tag_id 
FROM   taggings 
WHERE  tag_id IN( 73, 76 ) 
       AND taggable_id = 3238 
GROUP  BY tag_id 
HAVING Count(tag_id) = 2

现在,当我使用带有计数的查询时,我得到2行:

SELECT taggable_id, 
       tag_id 
FROM   taggings 
WHERE  tag_id IN( 73, 76 ) 
       AND taggable_id = 3238 

为什么?

2 个答案:

答案 0 :(得分:4)

您需要将GROUP BY列更改为taggable_id的分组,并且您需要更改having子句以计算不同的tag_id:

SELECT taggable_id
FROM   taggings 
WHERE  tag_id IN( 73, 76 ) 
GROUP  BY taggable_id 
HAVING Count(DISTINCT tag_id) = 2

SQL Fiddle with Demo。此类查询称为relational division

您当前的查询无效,因为您按tag_id而不是taggable_id进行分组。

答案 1 :(得分:0)

您确定要按tag_id分组并按tag_id本身计算吗?

看看这里:

http://www.w3schools.com/sql/sql_having.asp

SELECT Customer,SUM(OrderPrice)FROM Orders GROUP BY客户 使用SUM(OrderPrice)< 2000