开发者社区 > 数据库 > 关系型数据库 > 正文

PolarDB从5.6升级到5.7后相同的统计sql,查询出来的结果差别差很多,为什么?

PolarDB从5.6升级到5.7后相同的统计sql,查询出来的结果差别差很多,为什么?adeb2427f70fb9b375d0659e4c52c112.png
70ca3feb77c386c3ea4959b319c07fb7.png

展开
收起
三分钟热度的鱼 2024-05-23 08:26:10 56 0
1 条回答
写回答
取消 提交回答
  • 你的 sql本身结果就是不确定的,
    SELECT
    *
    FROM
    (
    SELECT
    t.core_cust_id,
    t.receive_amount,
    DATE_FORMAT(t.create_date, '%Y-%m-%d') AS create_date
    FROM
    t_api_log t
    WHERE
    t.customer_id = '网商银行'
    AND t.receive_amount >= 500000
    AND t.result_code = '0001'
    ORDER BY
    t.create_date
    ) tt
    GROUP BY
    tt.core_cust_id
    比如这里截取的sql片段,group by的字段没有全部在select 列里,这会导致t.receive_amount, DATE_FORMAT(t.create_date, '%Y-%m-%d') AS create_date 的结果是不确定的。可以设置SET sql_mode = 'ONLY_FULL_GROUP_BY' 会发现整个sql是不合法的,建议修改下sql
    derived_merge=off, 是保持了跟56一样的执行方式,所以结果是一致的。
    本质问题还是sql 不符合'ONLY_FULL_GROUP_BY' 规则 引起的结果不稳定。此回答整理自钉群“PolarDB专家面对面 - 自建/RDS MySQL迁移PolarDB MySQL/大版本升级”

    2024-05-23 10:06:26
    赞同 1 展开评论 打赏

阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。

相关产品

  • 云原生数据库 PolarDB
  • 相关电子书

    更多
    PolarDB+AnalyticDB助力交通物流行业系统升级 立即下载
    PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
    云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载