mysql GROUP BY子句验证

ks1*_*322 4 mysql sql validation error-handling warnings

假设我有一个包含以下内容的表:

mysql> select * from test;
+----+------+
| id | val  |
+----+------+
|  1 |    1 |
|  2 |    1 |
|  3 |    1 |
|  4 |    1 |
|  5 |    2 |
|  6 |    2 |
|  7 |    2 |
|  8 |    2 |
+----+------+
8 rows in set (0.00 sec)

mysql> 
Run Code Online (Sandbox Code Playgroud)

现在我使用group by子句运行错误的SQL查询,并且没有id列上的任何聚合并得到错误的结果:

mysql> select id, val from test group by val;
+----+------+
| id | val  |
+----+------+
|  1 |    1 |
|  5 |    2 |
+----+------+
2 rows in set (0.00 sec)

mysql> 
Run Code Online (Sandbox Code Playgroud)

mysql客户端或可能是其他一些工具可以验证此查询并在group by没有聚合的情况下发出错误或警告吗?

小智 7

是的,你可以这样做:

要禁用MySQL GROUP BY扩展,请启用ONLY_FULL_GROUP_BY SQL模式.

mysql> SET sql_mode = 'ONLY_FULL_GROUP_BY';
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文档.此外,有关服务器模块的此部分可能有所帮助