clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)

Posted xjl456852

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)相关的知识,希望对你有一定的参考价值。

复杂查询可能出现异常类似于,有时你可能是在创建视图,也可能会出现下面的错误:
Code: 352. DB::Exception: Received from localhost:9000. DB::Exception: Cannot refer column ‘表名.字段名‘ to table.

首先clickhouse 在当前版本(version 19.17.4.11)中不支持exists用法,如果遇到了exists用法,应该把它改为in的语法.

因为查询语句比较复杂,这个整体的复杂查询语句可以在mysql中查询, 其中的部分嵌套语句也可以在mysql和clickhouse中查询.
但是整体的复杂查询却不能在clickhouse中查询,会报上面提示的错误.
其中内部的嵌套查询用了多个表的join 和 inner join 条件用的 on (表名.列名 = 表名1.列名1) 等多表连接

最后的解决方案:
将内部的查询单独取出来创建一个单独的小视图.
然后原来的整体的复杂查询中内部嵌套的查询替换为这些小视图,这个整体的复杂查询语句就会变得简单,再运行这个查询,就不会再报这个错误了.

以上是关于clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)的主要内容,如果未能解决你的问题,请参考以下文章

Colocate Join :ClickHouse的一种高性能分布式join查询模型

Colocate Join :ClickHouse的一种高性能分布式join查询模型

Laravel 使用查询生成器进行嵌套连接查询

Firebird hash join

在 ClickHouse 中使用 JOINS 和检查 NULL 的 Tableau 查询失败

Clickhouse LEFT JOIN 部分匹配(或子选择)