首页 > 数据库 > mysql教程 > MySQL 5.6 是否提供与 ANY_VALUE 等效的函数?

MySQL 5.6 是否提供与 ANY_VALUE 等效的函数?

DDD
发布: 2024-11-27 04:14:11
原创
963 人浏览过

Does MySQL 5.6 Offer an Equivalent to the ANY_VALUE Function?

MySQL 5.6 中是否有 ANY_VALUE 功能?

您在生产中使用 MySQL 5.6 和开发中使用 MySQL 5.7 时遇到了问题。具体来说,您使用的是 GROUP BY 子句,该子句在 5.6 中返回错误。在 5.7 中,您可以使用 ANY_VALUE 函数解决该问题,但 MySQL 5.6 不支持该函数。

您使用的查询是:

SELECT c.id, c.name, i.* 
 FROM countries c, images i 
WHERE i.country_id = c.id
GROUP BY c.id;
登录后复制

在 MySQL 5.6 中,您会收到错误,因为 GROUP 中提到了非聚合列BY 子句。一种解决方案是使用 ANY_VALUE 函数,该函数从表中选择随机行。

SELECT c.id, c.name,
       ANY_VALUE(i.url) url, 
       ANY_VALUE(i.lat) lat, 
       ANY_VALUE(i.lng) lng 
  FROM countries c, images i
 WHERE i.country_id = c.id
 GROUP BY c.id;
登录后复制

但是,使用 ANY_VALUE 并不理想,因为它返回任意值。更好的解决方案是检索特定值,例如第一个值:

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
登录后复制

这将返回每个国家/地区的第一张图像,而不是随机图像。或者,您可以在 MySQL 5.6 中禁用 ONLY_FULL_GROUP_BY 模式以允许原始查询运行,但不建议这样做,因为它可能会导致不正确的结果。

以上是MySQL 5.6 是否提供与 ANY_VALUE 等效的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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