小编Ser*_*gio的帖子

删除 ONLY_FULL_GROUP_BY 的替代方法

从 MySQL 5.5 升级到 MySQL 5.7 后,我的一些查询出现错误:

错误 1055 (42000):

SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“grocery.Product_Category.category_id”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

我做了我的研究并找到了问题的原因以及如何解决它,基本上我只需要从@@sql_mode 中删除 ONLY_FULL_GROUP_BY ,一切都会再次工作。

但是,我想知道这是否是正确的做法。有没有替代方法,也许是构建查询的更好方法?

这是我的情况(http://sqlfiddle.com/#!9/6f1bd):

我有两个表(我在这里简化了它们的结构,但基本相同):产品和类别以及一个多对多关系表,以允许产品属于多个类别:

SELECT * FROM Product;

+------------+---------+
| product_id | name    |
+------------+---------+
|          1 | Tomato  |
|          2 | Orange  |
|          3 | Banana  |
|          4 | Lettuce |
|          5 | Carrot  |
+------------+---------+
5 rows in set (0,00 sec)

SELECT * FROM Category;

+-------------+------------+
| …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-5.5 group-by mysql-5.7

6
推荐指数
1
解决办法
4030
查看次数

标签 统计

group-by ×1

mysql ×1

mysql-5.5 ×1

mysql-5.7 ×1