注册 登录
编程论坛 SQL Server论坛

[求助]带GROUP BY参数的SQL语句出了问题

dudefeng 发布于 2007-08-25 16:19, 1424 次点击
我是SQL的初学者,练习SQL时在查询分析器中输入以下SQL语句:
use pubs
select * from dbo.authors group by city
这个语句执行时报告以下错误
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.au_id' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.au_lname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.au_fname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.phone' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.address' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.state' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.zip' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 2
列 'dbo.authors.contract' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
请教高手如何会出现这种错误,该怎么解决?先谢了!
5 回复
#2
fengmumei2007-08-25 17:13
select city from authors group by city
自己再查看一下sql基础知识
#3
aubblove2007-08-25 17:25
group by要和聚合函数一起使用,不能单独使用,具体什么是聚合函数,查看联机丛书吧
#4
provoke2007-08-26 00:47
楼主的语句之所以出错,是因为使用gropu by语句后,city字段值相同的各记录的其余字段不完全相同!

如果是想统计各城市的记录数量,这样就可以了:

select count(*),city from authors group by city

当然,给各列取个别名会更直观:

select 数量=count(*),城市=city from authors group by city
#5
dudefeng2007-08-26 07:58
好的,我明白了,原来GROUP BY子句的使用是有条件的,多谢各位指导!
#6
wleigh2007-10-10 15:05
刚好我也不明白这个 group by 的用法,,谢谢各位!
1