mysql查询字段与group by 字段:Expression #2 of SELECT list is not in GROUP BY clause
1.报错示例
1-1 执行sql语句:
SELECT
ssav.attr_id attr_id,
ssav.attr_name attr_name,
ssav.attr_value,
GROUP_CONCAT(DISTINCT info.sku_id) sku_ids
FROM
pms_sku_info info
LEFT JOIN pms_sku_sale_attr_value ssav ON ssav.sku_id = info.sku_id
WHERE
info.spu_id = 13
GROUP BY
ssav.attr_id
1-2 报错:
1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'gulimall_pms.ssav.attr_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
2.报错原因分析
2-1 原因:
因为MySQL的ONLY_FULL_GROUP_BY模式启用,这意味着所有在SELECT列表中的列都必须在GROUP BY子句中明确列出,或者与GROUP BY子句中的列通过某种方式相关联。如果不这样做,MySQL将拒绝执行查询,以防止返回不一致的结果集。
3.解决
3-1 将查询的字段写入group by中(根据业务需要类似于info.sku_id一样,使用聚合函数将查询的字段包装一下,这样不需要写入group by中了)
SELECT
ssav.attr_id attr_id,
ssav.attr_name attr_name,
ssav.attr_value,
GROUP_CONCAT(DISTINCT info.sku_id) sku_ids
FROM
pms_sku_info info
LEFT JOIN pms_sku_sale_attr_value ssav ON ssav.sku_id = info.sku_id
WHERE
info.spu_id = 13
GROUP BY
ssav.attr_id, ssav.attr_name,ssav.attr_value;
本文作者:远道而重任
本文链接:https://www.cnblogs.com/rong-xu-drum/p/18276346
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-06-30 How to Use VM options in IntelliJ IDEA 2020.3 on Windows 10 x64