WITH CONSUME
在 SELECT 查询中消费 stream 中的数据。
另请参阅:WITH Stream Hints
语法
SELECT ...
FROM <stream_name> WITH CONSUME [ AS <alias> ]
[ WHERE <conditions> ]
示例
假设有一个名为 s 的 stream,它捕获了以下数据:
SELECT * FROM s;
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ a │ change$action │ change$row_id │ change$is_update │
├─────────────────┼──────────────────┼────────────────────────────────────────┼──────────────────┤
│ 3 │ INSERT │ 4942372d864147e98188f3b486ec18d2000000 │ false │
│ 1 │ DELETE │ 3df95ad8552e4967a704e1c7209d3dff000000 │ false │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
如果现在使用 WITH CONSUME 查询该 stream,将得到以下结果:
SELECT
a
FROM
s WITH CONSUME AS ss
WHERE
ss.change$action = 'INSERT';
┌─────────────────┐
│ a │
├─────────────────┤
│ 3 │
└─────────────────┘
此时该 stream 已为空,因为上述查询已经消费了 stream 中当时存在的所有数据。
-- empty results
SELECT * FROM s;