因为该列没有包含在聚合函数或 GROUP BY 子句中

gdjlc 2008-11-20 02:23:54
select top 8 * from CommentList CL inner join Comment C on CL.ComID=C.ComID group by CL.ComID order by count(CL.ComID) desc

提示:选择列表中的列 'CommentList.ListID' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
我把group by CL.ComID 改为group by CL.ComID,CL.ListID
就又提示:选择列表中的列 'CommentList.Commentator' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
我在group by CL.ComID,CL.ListID后面加上CL.Commentator,
。。。
就这样一直把CommentList表的其它字段加完,最后就提示:不能比较或排序 text、ntext 和 image 数据类型,除非使用 IS NULL 或 LIKE 运算符。




请大家帮我分析一下,该怎么改SQL



...全文
1744 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
博萝博萝蜜 2012-07-10
  • 打赏
  • 举报
回复
那sql 语句该怎么写啊
ccyyss 2008-11-20
  • 打赏
  • 举报
回复
用group by是有限制的,举个例子来说,如果我要用group by语句,有表table1, 字段column1,column2
那我的格式可以这样写,select column1,count(*) from table1 group by column1
如果写成这样:(加多了column2)
select column1,count(*),column2 from table1 group by column1那就错了。
简单来说,你select的字段 与group by的字段要么名字是一样的,要么select 的字段是楼上所说的,sum(*),avg(*),count(*)这些聚合函数。
这样就能解释到为什么你会出现“选择列表中的列 ‘...’ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。” 的问题

另外,你的字段中有些字段的类型可能有text、ntext 和 image 类型中的一个可多个,而你又用了Group by,group by就是以...分组的意思,分组就是有比较了,而text、ntext 和 image这些字段是不能比较的,比如说我有一个text类型的字段column3,我就不能这样写select * from table1 where column3=‘aaa’
这就是你出现第二个错误的原因。


gdjlc 2008-11-20
  • 打赏
  • 举报
回复
我数据库没学好~
多谢jinjazz ,Zhanlixin ,已经弄好了。
Zhanlixin 2008-11-20
  • 打赏
  • 举报
回复
包含group by的sql语句不能带select * ,只能是select sum(field),avg(field),...,count(),group by 后面的字段名
jinjazz 2008-11-20
  • 打赏
  • 举报
回复
你知道group是用来干什么的吗?

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧