从 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)