子查询中的错误
问题描述:
即时贴在这里,我不知道如何解决它。子查询中的错误
我有一个数据库表,其中有用户ID,用户等级和日期时,有人已经投票给该用户(3字段)。
我试图读取具有最高的平均成绩为今天的日期,限于一个用户。 但问题是,我只想阅读5票以上的用户。
我的查询看起来是这样,但即时得到一个错误:
SELECT
idusers,
AVG(votes) AS Grade
FROM rank
WHERE (data = '{$dbDate}')
AND ((SELECT count(ID) + 1 FROM rank) AS tmpcount WHERE tmpcount>4)
GROUP BY idusers
ORDER BY Grade DESC
LIMIT 1
没有tmpcount>4
子句此查询工作正常,但我需要算标识的。
答
你必须使用HAVING
过滤结果的汇总值,如COUNT
(SUM
,MIN
,MAX
,AVG
,...)设置:
SELECT idusers, AVG(votes) AS Grade
FROM rank
WHERE (data = '{$dbDate}')
GROUP BY idusers
HAVING COUNT(*) > 4
ORDER BY Grade DESC
LIMIT 1
+0
感谢@ knittl它的工作... – user994461 2012-02-16 19:05:43
请选择您问题的一个更好的标题。 – 2012-02-16 18:58:22