📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

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;

文档内容是否有帮助?