0

我有这个条款:

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

我想从两个表(imagetags、userimages)中搜索所有可能的位置(标签、描述、标题)以查找“汽车”,并返回产生它们的图像数量(基本上是行)。

问题是,如果在其中两个或多个地方成功,count 会返回重复的结果。例如。如果同一图片的标签和描述中有汽车,则计数 = 2 而不是 1。如果我执行 SELECT imageid(...),则不会发生这种情况。在我看来,GROUP BY 并没有像 count 那样工作,有什么建议吗?

4

3 回答 3

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%')

文档COUNT

于 2012-09-08T14:42:03.943 回答
0

你试过用SELECT COUNT(imageid) FROM imagetags ...

于 2012-09-08T14:33:45.940 回答
0

尝试这个:

SELECT COUNT(userimages.id) ...
于 2012-09-08T14:36:21.663 回答