跳到主要内容

WITH CONSUME

引入或更新: v1.2.469

在SELECT查询中从流中消费数据。

另请参阅: WITH Stream Hints

语法

SELECT ...
FROM <stream_name> WITH CONSUME [ AS <alias> ]
[ WHERE <conditions> ]
备注

只要查询成功执行,WITH CONSUME子句将消费流捕获的所有数据,即使只使用WHERE条件查询了其中一部分数据。

示例

假设我们有一个名为's'的流,它捕获了以下数据:

SELECT * FROM s;

┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ a │ change$action │ change$row_id │ change$is_update │
├─────────────────┼──────────────────┼────────────────────────────────────────┼──────────────────┤
3INSERT4942372d864147e98188f3b486ec18d2000000 │ false
1DELETE3df95ad8552e4967a704e1c7209d3dff000000 │ false
└────────────────────────────────────────────────────────────────────────────────────────────────┘

如果我们现在使用WITH CONSUME查询流,我们将得到以下结果:

SELECT
a
FROM
s WITH CONSUME AS ss
WHERE
ss.change$action = 'INSERT';

┌─────────────────┐
│ a │
├─────────────────┤
3
└─────────────────┘

流现在为空,因为上面的查询已经消费了流中的所有数据。

-- 空结果
SELECT * FROM s;
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册