我们先来回顾下Mysql 5.7版本之后默认是不支持Group By 语句的。如果mysql5.7版本没有设置,使用group by 查询语句时出现错误,如下图所示:
可以进入mysql 命令行中使用如下命令
mysql> SELECT @@GLOBAL.sql_mode;
进行查询结果如下
所以我们需要做的就是将上面ONLY_FULL_GROUP_BY属性注掉。最好的办法就是对Mysql配置文件进行修改,使全局生效,修改如下,以CentOS为例vim /etc/my.cnf 在[mysqld] 中添加sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ,如下图所示
重启Mysql 使修改的配置文件生效 命令如下:service mysql restart。
那么问题来了,TiDB中是否支持Group By 语句?答案是否定的,TiDB同样也不支持Group By 语句。如何设置呢,这里将给出最佳答案,登陆TiDB命令行, mysql -u root -h 内网ip -P 4000(如果root设置密码输入密码) 执行如下语句set @@global.sql_mode= ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’; Tidb将该属性写入kv层,不用重启TiDB集群,设置立即生效。 (本人也是初学者,有什么不对希望指正:crazy_face:)