AnalyticDB MySQL提示报错Given correlated subquery with correlation [col_name] is not supported
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;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。