边城@浪子 2022-04-25 20:56 采纳率: 0%
浏览 199
已结题

clickhouse中or是如何处理的?

遇见逻辑需要使用or实现,但是添加or总是报错误,同事说是clickhouse不支持or,但是我测试数据or是可以的?
LEFT join tmp_cash_ref_in cash 
    on (toString(m.ref_no) = cash.ref_no or m.ext_ref_no = cash.ref_no)
    and m.io_type = cash.io_type
    and m.account_no = cash.accountId 

一个左连接的查询,上面的语句在执行就直接报错,如下:

SQL 错误 [403] [07000]: Code: 403. DB::Exception: Unsupported JOIN ON conditions. Unexpected '(toString(ref_no AS `--m.ref_no`) = (cash.ref_no AS `--cash.ref_no`)) OR (ext_ref_no = `--cash.ref_no`)': While processing (toString(ref_no AS `--m.ref_no`) = (cash.ref_no AS `--cash.ref_no`)) OR (ext_ref_no = `--cash.ref_no`). (INVALID_JOIN_ON_EXPRESSION) (version 22.3.3.44 (official build))
, server ClickHouseNode(addr=http:192.168.20.189:8123, db=default)@98496345

但是我在测试的时候,clickhouse是支持or的,结果如下:clickhouse是支持or的

mysql> select ref_no,ae_code from dwd_cash_movement where (ref_no = 10000002 or ref_no = 10000001);
+----------+---------+
| ref_no   | ae_code |
+----------+---------+
| 10000001 | A012    |
| 10000002 | A012    |
| 10000001 | A012    |
| 10000002 | A012    |
+----------+---------+
4 rows in set (0.00 sec)
Read 16384 rows, 358.92 KiB in 0.004209074 sec., 3892542 rows/sec., 83.27 MiB/sec.
  • 写回答

2条回答 默认 最新

  • 三千烦恼丝xzh 2022-04-25 22:20
    关注

    报错这里

    
    OR (ext_ref_no = `--cash.ref_no`)
    

    好像丢了表的别名,不知道是不是SQL解析的问题,你可以尝试去掉别名直接使用表名.列名 试试看

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月20日
  • 创建了问题 4月25日

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据