主题:sql问题,急救!
subendong
[专家分:60] 发布于 2007-05-31 13:09:00
select top 1 count(userid) as num,userid,name from book group by userid order by count(userid) desc
出现问题:
列 'book.name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
如何解决?哪为前辈肯帮帮我啊~!~!
回复列表 (共8个回复)
沙发
菜鸭 [专家分:5120] 发布于 2007-06-01 09:04:00
select top 1 count(userid) as num,userid,name
from book
group by userid,name
order by count(userid) desc
板凳
subendong [专家分:60] 发布于 2007-06-01 20:37:00
这样查寻的话 要比去掉NAME字段查询出的记录少 不信你可以实践一下
3 楼
subendong [专家分:60] 发布于 2007-06-12 16:49:00
怎么没人回答呢???难道这样本来就是不可以的?
4 楼
ninafi [专家分:0] 发布于 2007-07-01 16:24:00
这样查寻的话 要比去掉NAME字段查询出的记录少 不信你可以实践一下
5 楼
joe2002 [专家分:80] 发布于 2007-07-06 10:37:00
使用了top 1,两个查询出来都只有一行,怎么会少?
另外,userid为KEY的话,使用(userid)分组与使用(userid, name)分组等价
6 楼
joe2002 [专家分:80] 发布于 2007-07-06 10:41:00
SQL语言要求,如果在select列中出现聚集函数,则字段必须放在聚集函数里面,或者用作分组列放在group by 后面;
7 楼
subendong [专家分:60] 发布于 2007-07-06 16:18:00
呵呵,我说的那个是把TOP 1去掉
8 楼
happyboy2007 [专家分:3900] 发布于 2007-09-05 09:39:00
你的SQL语句中有很多问题。
第一,因为你已经按照userid 分组,那么就不能在select后再出现其他字段(聚合函数除外)。
第二,order by 是按某字段排序,不能使用聚合函数
我来回复