`

mysql_group by 奇怪问题解决

 
阅读更多

我回去查了一下关于mysql group by 奇怪的现像,
    可以通过修改sql_mode 的方法改变这种奇怪的现像。
    例如下:

mysql> SELECT job,sal,deptno
    -> FROM emp
    -> GROUP by deptno;
+----------+---------+--------+
| job      | sal     | deptno |
+----------+---------+--------+
| MANAGER  | 2450.00 |     10 |
| CLERK    |  800.00 |     20 |
| SALESMAN | 1600.00 |     30 |
+----------+---------+--------+
3 rows in set (0.04 sec)

mysql> set sql_mode = "STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY";
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT job,sal,deptno
    -> FROM emp
    -> GROUP by deptno;
ERROR 1055 (42000): 'tao.emp.JOB' isn't in GROUP BY
mysql> SELECT count(job),count(sal),deptno
    -> FROM emp
    -> GROUP BY deptno;
+------------+------------+--------+
| count(job) | count(sal) | deptno |
+------------+------------+--------+
|          3 |          3 |     10 |
|          5 |          5 |     20 |
|          6 |          6 |     30 |
+------------+------------+--------+
3 rows in set (0.00 sec)


//-------------------------------------------------
//以上修改sql_mode 只在当前会话中生效.
//如果需要长期有效请修改 my.ini 文件中

#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql_mode = "STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY"

分享到:
评论

相关推荐

    MySql版本问题sql_mode=only_full_group_by的完美解决方案

    当从旧版本MySQL升级到新版本时,确保在生产环境部署前进行充分的测试和代码审查,以解决`ONLY_FULL_GROUP_BY`可能导致的问题。 总的来说,`sql_mode=only_full_group_by`的解决方案不仅涉及技术操作,还涉及到对...

    php提示Warning:mysql_fetch_array() expects的解决方法

    本文实例讲述了php提示Warning mysql_...mysql_fetch_array()函数导致的,下面我们一起来看问题解决方案,我的代码如下: 复制代码 代码如下:include(“conn.php”); if(!empty($_GET[‘id’])){  $sql=”select * fr

    navicat120_mysql_en_x64.tar.gz

    tar zxvf navicat112_mysql_cs_x64.tar.gz 进入解压的目录,运行如下命令 ./start_navicat 问题一:中文乱码 解决:打开start_navicat文件 将export LANG="en_US.UTF-8"改为export LANG="zh_CN.UTF-8" 问题二:试用...

    解决MySQL 5.7.9版本sql_mode=only_full_group_by问题

    `ONLY_FULL_GROUP_BY`模式是MySQL为了符合SQL标准而引入的,虽然这可能导致一些兼容性问题,但其目的是提高查询的规范性和一致性。因此,理解并适应这种变化对于编写健壮的SQL代码至关重要。如果你的代码需要在多种...

    MySQL5.7中的sql_mode默认值带来的坑及解决方法

    案例一:ONLY_FULL_GROUP_BY 问题描述 MySQL版本从5.6升级至5.7之后,部分SQL执行报错,报错信息如下: ERROR 1055 (42000): Expression #3 of XXXXXX list is not in GROUP BY clause and contain

    mysql使用GROUP BY分组实现取前N条记录的方法

    本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...

    navicat8lite_mysql_cs

    Navicat8Lite_mysql_cs,正如其名,是一款专为MySQL数据库设计的轻量级管理软件,它以其出色的功能和友好的用户界面,为数据库管理员提供了极大的便利,有效解决了数据导入导出可能出现的乱码问题。 首先,Navicat8...

    Session_7_MySQL_Group_Replication_for_High_Availability

    ### MySQL Group Replication for High Availability #### 背景 MySQL Group Replication 是 Oracle 公司为 MySQL 数据库提供的一项高级复制技术,旨在通过多成员组的架构来提高数据库系统的可用性和性能。这项...

    mysql设置max_allowed_packet_解决_MySQL_Error_2006

    mysql设置max_allowed_packet_解决_MySQL_Error_2006

    Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

    MySQL 5.7及以上版本引入了一个新的SQL标准模式`ONLY_FULL_GROUP_BY`,该模式旨在增强SQL查询的严格性,确保结果集的合法性。在早期的MySQL版本中,某些GROUP BY查询可以返回不确定的行数据,这在严格模式下是不允许...

    Ansible.mysql_db.安装&问题及解决方案&参数说明

    Ansible mysql_db 模块的安装,问题及解决方案,以及参数说明。开始时提示模块无法使用是因为依赖包mysqldb没有安装。解决办法是安装依赖包。安装后提示错误是因为登录用户无法免官登录mysql。解决办法是指定登录...

    navicat_for_mysql_10.0.11_cn_linux.tar.gz的安装包及其安装及配置步骤

    压缩包中包含navicat_for_mysql_10.0.11_cn_linux.tar.gz的安装包及其安装及配置步骤!由于linux里安装Navicat需要安装另一个环境wine,其安装很繁琐,而本Navicat安装包中已经自带wine环境,不需要另外安装wine环境...

    MySQL_5.6.22_win32_XiaZaiBa

    在报表和分析方面,MySQL 5.6引入了Group Replication,这是一种高可用性解决方案,允许多个服务器同时复制数据,以实现更快的故障切换。此外,改进的窗口函数和增强的统计功能使复杂的查询和数据分析更加高效。 ...

    学习 用的 mysql_pwd_crack.rar

    mysql_pwd_crack.rar 加上个木头字典 ,自己写也ok

    MySQL数据库中group by语句与update语句的用法研究.pdf

    本论文对 MySQL 数据库中的 group by 语句和 update 语句进行了深入研究,讨论了这些语句在数据库查询和修改中的应用,并给出了具体的解决方案。 一、MySQL 数据库中 group by 语句的用法 Group by 语句的作用是对...

    lib_mysqludf_sys 的win版本dll库

    lib_mysqludf_sys可能是MySQL用户定义函数(User-Defined Function, UDF)的一个实现,允许用户在MySQL数据库中自定义计算逻辑。 **关于lib_mysqludf_sys** lib_mysqludf_sys可能是一个扩展了MySQL功能的库,提供...

    MySQL_5.1_zh

    MySQL_5.1_zh.chm

Global site tag (gtag.js) - Google Analytics