带分组的Mysql count()给出重复项

时间:2012-09-08 14:25:56

标签: mysql count group-by duplicates

我有这个条款:

SELECT count(*) FROM imagetags 
INNER JOIN userimages ON imagetags.imageid = userimages.id        
WHERE privacy='public' 
&& (tag='cars' || description LIKE '%cars%' || title LIKE '%cars%')     
GROUP BY imageid

我想从'cars'的两个表(imagetags,userimages)中搜索所有可能的位置(标记,描述,标题),并返回产生它们的图像数量(基本上是行)。

问题是,如果两个或多个这些地方成功,则count会返回重复的结果。例如。如果标签中有汽车并且描述相同的图片,则count = 2而不是1。 如果我做SELECT imageid(...)就不会发生这种情况。在我看来,GROUP BY没有按计数,任何建议工作吗?

3 个答案:

答案 0 :(得分:1)

在查询中使用DISTINCT

SELECT COUNT(DISTINCT userimages.id) FROM imagetags 
INNER JOIN userimages ON imagetags.imageid = userimages.id        
WHERE privacy='public' 
&& (tag='cars' || description LIKE '%cars%' || title LIKE '%cars%')

Documentation for COUNT

答案 1 :(得分:0)

您是否尝试过使用SELECT COUNT(imageid) FROM imagetags ...

答案 2 :(得分:0)

试试这个:

SELECT COUNT(userimages.id) ...