开发者社区> 问答> 正文

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

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

展开
收起
提个问题 2024-06-04 18:06:23 273 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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像