开发者社区> 问答> 正文

AnalyticDB MySQL提示报错Given correlated subquery w...

AnalyticDB MySQL提示报错Given correlated subquery with correlation [col_name] is not supported

展开
收起
提个问题 2024-06-04 18:06:23 222 0
1 条回答
写回答
取消 提交回答
  • Given correlated subquery with correlation: [column_name] is not supported
    原因:关联列仅允许出现在WHERE子句中。AnalyticDB for MySQL在执行关联子查询时,会解关联,即将关联子查询变为普通子查询,若关联列出现在子查询的SELECT子句中,会解关联失败,进而导致报错。

    以如下代码为例,关联列ts1.a出现在子查询的SELECT子句中,导致关联查询无法解开,出现报错。

    SELECT ts1.a,
    (SELECT SUM(ts2.a) + ts1.a
    FROM ts2
    WHERE ts1.b = ts2.b )
    FROM ts1;
    解决方法:

    方法一:在子查询的SELECT子句中去除关联列,改写SQL。

    SELECT ts1.a,
    (SELECT SUM(ts2.a)
    FROM ts2
    WHERE ts1.b = ts2.b ) + ts1.a
    FROM ts1;
    方法二:通过JOIN改写关联子查询。

    SELECT ts1.a,
    tt.suma + ts1.a
    FROM ts1
    LEFT JOIN
    (SELECT ts2.b AS b,
    SUM(ts2.a) AS suma
    FROM ts2
    GROUP BY ts2.b ) tt
    ON ts1.b = tt.b;

    image.png

    参考文档https://help.aliyun.com/zh/analyticdb-for-mysql/developer-reference/associated-subqueries?spm=a2c4g.11186623.0.i91

    2024-06-07 09:11:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于云原生数据仓库AnalyticDB PG的最佳实践 立即下载
新氧云原生全栈数仓最佳实践 立即下载
离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进 立即下载

相关镜像