当我尝试仅在一列上进行 ASOF JOIN 时,Clickhouse 会出现错误,但在添加相等 JOIN 子句时不会出现错误。为什么?
\n示例表:
\norders:\n\xe2\x94\x8c\xe2\x94\x80time\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80price\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80id\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 0 \xe2\x94\x82 4 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 1 \xe2\x94\x82 4 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 2 \xe2\x94\x82 4 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 3 \xe2\x94\x82 3 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 4 \xe2\x94\x82 2 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 5 \xe2\x94\x82 1 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 6 \xe2\x94\x82 1 \xe2\x94\x82 3 \xe2\x94\x82\nRun Code Online (Sandbox Code Playgroud)\ntrades:\n\xe2\x94\x8c\xe2\x94\x80time\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80qty\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80id\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 2 \xe2\x94\x82 100 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 4 \xe2\x94\x82 200 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 5 \xe2\x94\x82 205 \xe2\x94\x82 3 \xe2\x94\x82\nRun Code Online (Sandbox Code Playgroud)\n我们首先尝试仅在时间列上进行 ASOF JOIN。
\nSELECT\n time,\n price,\n qty\nFROM orders\nASOF INNER JOIN trades ON trades.time >= orders.time\nORDER BY time ASC\n\nReceived exception from server (version 21.7.5):\nCode: 403. DB::Exception: Received from localhost:9000. DB::Exception: Cannot get JOIN keys from JOIN ON section: trades.time >= time. \nRun Code Online (Sandbox Code Playgroud)\n现在让我们做同样的事情,除了我们还将 JOIN 到虚拟列 (id) 上。
\nSELECT\n time,\n price,\n qty\nFROM orders\nASOF INNER JOIN trades ON (trades.id = orders.id) AND (trades.time >= orders.time)\nORDER BY time ASC\n\n\xe2\x94\x8c\xe2\x94\x80time\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80price\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80qty\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 0 \xe2\x94\x82 4 \xe2\x94\x82 100 \xe2\x94\x82\n\xe2\x94\x82 1 \xe2\x94\x82 4 \xe2\x94\x82 100 \xe2\x94\x82\n\xe2\x94\x82 2 \xe2\x94\x82 4 \xe2\x94\x82 100 \xe2\x94\x82\n\xe2\x94\x82 3 \xe2\x94\x82 3 \xe2\x94\x82 200 \xe2\x94\x82\n\xe2\x94\x82 4 \xe2\x94\x82 2 \xe2\x94\x82 200 \xe2\x94\x82\n\xe2\x94\x82 5 \xe2\x94\x82 1 \xe2\x94\x82 205 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n