MySQL 这与 sql_mode=only_full_group_by 不兼容

标签 mysql

SELECT u.*, p.name as plan, COUNT(m.user_id) as totalprojects
FROM users u 
LEFT JOIN plans p ON p.id = u.access
LEFT JOIN members m ON m.user_id = u.id
WHERE u.email = 'email address';

所以我有上面的内容,并且我在 Mac 上运行 MySQL 并尝试执行

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, ONLY_FULL_GROUP_BY';

这说的是

Query OK, 0 rows affected (0.00 sec)

SELECT @@sql_mode

显示

+------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                             |
+------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

最佳答案

是的。上述查询与 sql_mode=only_full_group_by 不兼容。如果启用了 only_full_group_by,则必须提及在 GROUP BY 子句中选择的所有列。这里没有任何 GROUP BY 子句,并且也使用聚合函数 (COUNT)。理想情况下,如果启用了 only_full_group_by,则此查询应该失败。默认情况下,从 MySQL 5.7 开始启用此功能。

请引用https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html了解详情

关于MySQL 这与 sql_mode=only_full_group_by 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45351160/

相关文章:

php - WP-Polls 将 IP 限制设置为 2

php - Laravel:加载存储在 'storage' 文件夹中的图像

php - MySQL 使用 PHP 将 DATETIME 更新为 NOW()

php - SQL主键重置?

php - 在 Android 浏览器中运行网页

mysql - 如何在 MySQL 查询中进行正则表达式

mysql - 使用 HikariCP 和 Slick 管理 MySQL 连接

MySQL 哈希表模式

mysql - 使用 Hive 查询 Sqoop 到 MySQL

mysql根据同一张表选择查询