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

GROUP BY 错误1055怎么只能这样写才和老师结果一样?

MYSQL版本不一样GROU BY 存在1055错误

delete t1 from tdb_goods as t1 left join (select min(a.goods_id)goods_id,goods_name from tdb_goods a group by goods_name having count(goods_name)>1) t2
on t1.goods_name = t2.goods_name
where t1.goods_id > t2.goods_id

正在回答

4 回答

因为你的MySQL版本中GROUP BY 的语法要求SELECT后面的字段不能超出GROUP BY 要排序的字段集,否则就会返回SELECT list is not in GROUP BY clause的错误,而你用min()函数之后返回的是一个值,SELECT 后面就只有goods_name一个字段了,这样就会跟GROUP BY 后面的goods_name字段对应上,查询语句就可以正确执行了。

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

这个sql语句违背了sql_mode=only_full_group_by 

在cmd上

set @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

去掉ONLY_FULL_GROUP_BY即可正常执行sql.

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

 from tdb_goods a group by goods

多写了个a…

 from tdb_goods group by goods

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

delete t1 from tdb_goods as t1 left join (select min(a.goods_id)goods_id,goods_name from tdb_goods a group by goods_name having count(goods_name)>1) t2
on t1.goods_name = t2.goods_name
where t1.goods_id > t2.goods_id

a是干嘛的?

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

野驴情 提问者

我版本5.7.14的,按老师的方式写GROUP BY提示错误,只能这样写才能得到结果,就是想问是什么原因
2017-02-23 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

GROUP BY 错误1055怎么只能这样写才和老师结果一样?

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