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

chenyayun77 2013-03-12 10:25:17

select * FROM bmdCustomer a join bdCustomerAllocate b ON (a.ID=b.CustomerID)
group by a.Id
order by a.lasteditdate desc


选择列表中的列 'bmdCustomer.CustomerName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

老是提示这个,这是怎么回事。
...全文
595 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
szm341 2013-03-12
  • 打赏
  • 举报
回复
引用 10 楼 chenyayun77 的回复:
我是要查询两个表,其中b表有重复的记录。我要取的数据是整个表不重复的数据,不是只查一列,是显示整个表。
这种情况一般是先把b表处理,按CustomerID分组,将其他可重复字段或是聚合或是合并,然后再与a表关联
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
我是要查询两个表,其中b表有重复的记录。我要取的数据是整个表不重复的数据,不是只查一列,是显示整个表。
小孩快跑 2013-03-12
  • 打赏
  • 举报
回复
如果求最大的ID,用max函数就行啦!
發糞塗牆 2013-03-12
  • 打赏
  • 举报
回复
SQLServer 技术内幕第一本说的很清楚,t-sql的查询顺序先from再....再group by,再select,如果你group by中没有出现的列,那么select 里面当然不能使用。考虑改写查询,而不是如何去去掉错误。
搬砖的码农 2013-03-12
  • 打赏
  • 举报
回复
引用 2 楼 Haiwer 的回复:
去掉group by a.Id
+1
SQL77 2013-03-12
  • 打赏
  • 举报
回复
举个例子 你ID NAME 1 A 1 B 2 C 你按ID分组。你想留哪个NAME啊。如果都想要。就不要GROUP BY 或者把NAME包含进GROUP BY。要不然就要去掉。或者聚合NAME。
  • 打赏
  • 举报
回复
引用 4 楼 chenyayun77 的回复:
我用来去除重复行的
用distinct就行
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
我用来去除重复行的
S23812434 2013-03-12
  • 打赏
  • 举报
回复
没有用distinct,干嘛用Group By
昵称被占用了 2013-03-12
  • 打赏
  • 举报
回复
去掉group by a.Id
哥眼神纯洁不 2013-03-12
  • 打赏
  • 举报
回复
你这个select * 用的不对,你这个语句要展示处啥效果?
吉普赛的歌 2013-03-12
  • 打赏
  • 举报
回复
很感兴趣, 麻烦你把表结构也贴上来, 有几十条测试数据最好, 这样大家帮你更方便吧
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
up 还是没有人知道啊?
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
我刚刚写了一遍,这样写还是有重复数据
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
引用 17 楼 beisenxh 的回复:
SQL code?1Select CustomerID From bdCustomerAllocate Group By CustomerID 你执行下就知道了嘛,只剩下CustomerID 这一列,还都是唯一的。 你假如要显示别的列,你前面也要加上去的,同时group by 的内容和select 的内容是除了sum, count 等都是一致的。 ……
有没有简单的方法啊?这个表要提取的字段太多了
红木偶 2013-03-12
  • 打赏
  • 举报
回复
Select CustomerID From bdCustomerAllocate Group By CustomerID 
你执行下就知道了嘛,只剩下CustomerID 这一列,还都是唯一的。 你假如要显示别的列,你前面也要加上去的,同时group by 的内容和select 的内容是除了sum, count 等都是一致的。
szm341 2013-03-12
  • 打赏
  • 举报
回复
引用 14 楼 chenyayun77 的回复:
你这个我试过了 只能得到A表的数据,B表的数据不显示了,我要两个表的数据都有显示的。
没见我用了min,max等函数了吗,不会用聚合函数吗?
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
up 还有人知道吗?
chenyayun77 2013-03-12
  • 打赏
  • 举报
回复
你这个我试过了

Select * From bmdCustomer a Inner Join 
(Select CustomerID From bdCustomerAllocate Group By CustomerID ) b
On a.ID=b.CustomerID order by a.lasteditdate desc
只能得到A表的数据,B表的数据不显示了,我要两个表的数据都有显示的。
szm341 2013-03-12
  • 打赏
  • 举报
回复
select * from a inner join (select id,sum(money) money,min(a)a,max(b)b from b)b on a.id=b.id 如果有需要合并的列,2005以上可以用for xml path('') 2000以下的需要自己写函数合并, 总之把关联的表弄成1对1的形式就可以了
加载更多回复(1)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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