首页 > 数据库 > mysql教程 > 如何在 MySQL 5.6 中聚合非分组列?

如何在 MySQL 5.6 中聚合非分组列?

Susan Sarandon
发布: 2024-11-29 04:35:13
原创
353 人浏览过

How to Aggregate Non-Grouped Columns in MySQL 5.6?

不进行分组聚合:MySQL 5.6 的解决方案

在 MySQL 5.6 中,ANY_VALUE() 函数,允许聚合非分组列,不可用。这在将查询从 MySQL 5.7 迁移到 5.6 时带来了挑战。

MySQL 模式修改

一种解决方案是修改生产环境的 SQL 模式。通过将 ONLY_FULL_GROUP_BY 模式设置为空,它将暂时禁用聚合非分组列的限制。

SET SESSION sql_mode = '';
/* Your query here */
SET SESSION sql_mode = @mode;
登录后复制

替代聚合方法

但是,很重要请注意,所讨论的查询可能并不理想。它从每个国家/地区的“图像”表中返回随机行。

更可靠的方法是根据条件(例如“id”列)选择特定图像行。

SELECT c.id, c.name, i.*
FROM countries c
LEFT JOIN (
  SELECT MIN(id) id, country_id
  FROM images
  GROUP BY country_id
) first ON c.id = first.country_id
LEFT JOIN images i ON first.id = i.id
登录后复制

此查询将为每个国家/地区返回一行,并提供可预测的图像选择。它利用“id”列来选择每个国家/地区的“第一张”图像。

以上是如何在 MySQL 5.6 中聚合非分组列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板