回 帖 发 新 帖 刷新版面

主题:sql问题,急救!

select top 1 count(userid) as num,userid,name from book group by userid order by count(userid) desc

出现问题:
列 'book.name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

如何解决?哪为前辈肯帮帮我啊~!~!

回复列表 (共8个回复)

沙发

select top 1 count(userid) as num,userid,name
from book
group by userid,name
order by count(userid) desc

板凳

这样查寻的话  要比去掉NAME字段查询出的记录少 不信你可以实践一下

3 楼

怎么没人回答呢???难道这样本来就是不可以的?

4 楼

这样查寻的话  要比去掉NAME字段查询出的记录少 不信你可以实践一下

5 楼

使用了top 1,两个查询出来都只有一行,怎么会少?
另外,userid为KEY的话,使用(userid)分组与使用(userid, name)分组等价

6 楼

SQL语言要求,如果在select列中出现聚集函数,则字段必须放在聚集函数里面,或者用作分组列放在group by 后面;

7 楼

呵呵,我说的那个是把TOP 1去掉

8 楼

你的SQL语句中有很多问题。
第一,因为你已经按照userid 分组,那么就不能在select后再出现其他字段(聚合函数除外)。
第二,order by 是按某字段排序,不能使用聚合函数

我来回复

您尚未登录,请登录后再回复。点此登录或注册