为了账号安全,请及时绑定邮箱和手机立即绑定

我想问分组查询是怎么在分组情况下把组内不同的id显示出来的,完全不明白?

SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_name) >= 2;就这句,id18与21的name相同,19与22相同,按理说不应显示id,应该报错,我试验也是报错。但视频中出id18,19,匪夷所思。

正在回答

4 回答

你这样写:SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_id) >= 2,通过name分组,看看哪个name对应了两条ID,

1 回复 有任何疑惑可以回复我~
#1

慕虎4453882 提问者

非常感谢!
2018-06-24 回复 有任何疑惑可以回复我~
#2

慕盖茨6742792 回复 慕虎4453882 提问者

我的count(goods_name)没报错
2018-06-25 回复 有任何疑惑可以回复我~
报错是因为MySQL 5.7.5以上版本启用了only_full_group_by SQL模式,select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,请参考https://blog.csdn.net/fansili/article/details/78664267老师用的版本是没有限制的。也可以修改配置,不启用这个。
2 回复 有任何疑惑可以回复我~

为什么应该报错啊,这是对的啊。GROUP BY分组以后每组不管有多少条记录,都只显示一条出来

2 回复 有任何疑惑可以回复我~

SELECT MIN(goods_id),goods_name FROM tdb_goods GROUP BY goods_name;这样就成功了

自问自答

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

我想问分组查询是怎么在分组情况下把组内不同的id显示出来的,完全不明白?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信