网站建设加推广需要多少钱,揭阳网站建设模板,网络公司是做什么,网页设计教程免费网站作者#xff1a;俊达
ONLY_FULL_GROUP_BY
设置ONLY_FULL_GROUP_BY时#xff0c;对有GROUP BY子句SQL#xff0c;SELECT的字段要么是GROUP BY中的字段#xff0c;要么对字段进行聚合运算#xff08;如 SUM、COUNT 等#xff09;#xff0c;否则SQL执行报错。 不设置ONL…作者俊达
ONLY_FULL_GROUP_BY
设置ONLY_FULL_GROUP_BY时对有GROUP BY子句SQLSELECT的字段要么是GROUP BY中的字段要么对字段进行聚合运算如 SUM、COUNT 等否则SQL执行报错。 不设置ONLY_FULL_GROUP_BY则允许更宽松的行为即使查询违反了这一规则MySQL 也会接受即对于不在GROUP BY字段不使用聚合函数也不会报错MySQL会随便选取数据返回。 准备测试数据
mysql create table t_group(a int, b int);
Query OK, 0 rows affected (0.02 sec)mysql insert into t_group values(1,1),(1,2),(2,2),(2,1);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0mysql select * from t_group;
------------
| a | b |
------------
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 2 | 1 |设置ONLY_FULL_GROUP_BY
mysql set sql_modeONLY_FULL_GROUP_BY;
Query OK, 0 rows affected (0.00 sec)mysql select a, b from t_group group by a;
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column test_sqlmode.t_group.b which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by不设置SQL_MODE
mysql set sql_mode;
Query OK, 0 rows affected (0.00 sec)mysql select a, b from t_group group by a;
------------
| a | b |
------------
| 1 | 1 |
| 2 | 2 |
------------
2 rows in set (0.00 sec)上面的SQL虽然能执行但是并不符合SQL标准。
总结
我们的建议是设置ONLY_FULL_GROUP_BY这有助于确保查询的严格性和一致性符合 SQL 标准。此外在生产环境中更改SQL_MODE 可能会影响现有的查询和应用程序因此在做任何更改之前需要先进行兼容性测试。
更多技术信息请查看云掣官网https://yunche.pro/?tyrgw