我有这个条款:
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没有按计数,任何建议工作吗?
答案 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%')
答案 1 :(得分:0)
您是否尝试过使用SELECT COUNT(imageid) FROM imagetags ...
答案 2 :(得分:0)
试试这个:
SELECT COUNT(userimages.id) ...