MySQL GROUP BY语句问题

g10guang 2016-05-15 07:38:01

当我使用 GROUP BY 语句的时候出现了这个错误。我之前都遇到过,在学习 MySQL.
请问这个问题是怎么回事?谢谢
...全文
249 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-05-16
  • 打赏
  • 举报
回复
如果是安装版,默认是支持楼主的语法的 要注意这是不好控,只有在特定环境下可这样用,比如单表,1对1关系表等 假如你从 GROUP BY 部分省略的列在该组中不是唯一的,那么不要使用这个功能! 你会得到非预测性结果。
中国风 2016-05-16
  • 打赏
  • 举报
回复
看看配置文件my这一段对不对 sql-mode="'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 正确还不行时 加上这个试试 sql-mode="'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Ginnnnnnnn 2016-05-16
  • 打赏
  • 举报
回复
意思就是查询出来的列里面,除了group by 后面跟的列不需要使用聚合函数,其它的列都需要用聚合函数来处理。例子就像#1 那样处理就可以了
中国风 2016-05-16
  • 打赏
  • 举报
回复
百度一下MYSQL 配置文件说明 就会了
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 11 楼 roy_88 的回复:
两句?你是绿色版还是安装版 在安装版 应该 有一个文件 my.ini文件,找到以上sql-mode这段 看看以上贴出来的配置是否一致?
能不能教一下怎么写 my.ini?谢谢
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 11 楼 roy_88 的回复:
两句?你是绿色版还是安装版

在安装版 应该 有一个文件 my.ini文件,找到以上sql-mode这段


看看以上贴出来的配置是否一致?

我用的是 MySQL-5.7.12 zip包解压的,里面的 my.ini是我从网上拷贝来的:

我看到用安装包安装的my.ini 文件相对复杂,但是我不会写。
中国风 2016-05-16
  • 打赏
  • 举报
回复
两句?你是绿色版还是安装版 在安装版 应该 有一个文件 my.ini文件,找到以上sql-mode这段 看看以上贴出来的配置是否一致?
中国风 2016-05-16
  • 打赏
  • 举报
回复
这一功能主要就是简化GROUP后的本单位 如果同一个表 selec id,name from tab group by id--ID为主健时,没必要再写group by id,name 多表联接时最好不用,不可控制显示结果集
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 8 楼 roy_88 的回复:
加了需要重启MySql服务,是不是没有做这步操作?

还有我不明白的是:SELECT 后面需要接 聚合函数或者是在GROUP BY 后面出现的 字段。
但是为什么确实成功的?
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 8 楼 roy_88 的回复:
加了需要重启MySql服务,是不是没有做这步操作?

当我加上你的两个语句后, MySQL无法启动,显示:
中国风 2016-05-16
  • 打赏
  • 举报
回复
加了需要重启MySql服务,是不是没有做这步操作?
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 3 楼 roy_88 的回复:
看看配置文件my这一段对不对 sql-mode="'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 正确还不行时 加上这个试试 sql-mode="'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
我把两个配置都加上去了,运行同样的语句,但是还是出现同样的错误提示。 我还想问一下那两条是什么意思? 刚刚学习MySQL不太懂,谢谢。
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 2 楼 KanzakiOrange 的回复:
意思就是查询出来的列里面,除了group by 后面跟的列不需要使用聚合函数,其它的列都需要用聚合函数来处理。例子就像#1 那样处理就可以了
我查询了一下,好像是 select后面跟着的要么是聚合函数,要么是出现在 GROUP BY 的字段,但是我看了慕课的一个视频,GROUP BY 里面没有的字段能够SELECT ,而且没显示错误。为何?
g10guang 2016-05-16
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
把name改成 max(name)就可以了。 PS:你这是要查询什么呢?
刚刚新手学习 MySQL,跟着慕课学,老师能够运行的命令我却显示错误
卖水果的net 2016-05-15
  • 打赏
  • 举报
回复
把name改成 max(name)就可以了。 PS:你这是要查询什么呢?

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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