跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Back to all posts

R2 SQL 现在支持 UNION、INTERSECT、EXCEPT 和 SELECT DISTINCT

R2 SQL 现在支持集合操作(UNIONINTERSECTEXCEPT)和 SELECT DISTINCT,从而扩展了您可直接对 R2 Data CatalogApache Iceberg 表运行的分析查询范围。

集合操作

组合多个 SELECT 语句的结果:

  • UNION — 返回两个查询的所有行,并移除重复项。
  • UNION ALL — 返回两个查询的所有行,保留重复项。
  • INTERSECT — 仅返回在两个查询中都出现的行。
  • EXCEPT — 返回存在于第一个查询中但不存在于第二个查询中的行。
-- Find zones that had either firewall blocks OR high-risk requests
SELECT zone_id FROM my_namespace.firewall_events WHERE action = 'block'
UNION
SELECT zone_id FROM my_namespace.http_requests WHERE risk_score > 0.8
-- Find zones with both firewall blocks AND high traffic
SELECT zone_id FROM my_namespace.firewall_events WHERE action = 'block'
INTERSECT
SELECT zone_id FROM my_namespace.http_requests
GROUP BY zone_id
HAVING COUNT(*) > 10000
-- Find enterprise zones that have not been compacted
SELECT zone_id FROM my_namespace.zones WHERE plan = 'enterprise'
EXCEPT
SELECT zone_id FROM my_namespace.compaction_history

SELECT DISTINCT

从查询结果中消除重复行:

SELECT DISTINCT region, department
FROM my_namespace.sales_data
WHERE total_amount > 1000
ORDER BY region, department
LIMIT 100

对于可以接受近似结果的大型数据集,approx_distinct() 仍是计算唯一值数量的更快替代方法。

有关完整语法参考,请参阅 SQL 参考。有关性能指南,请参阅限制与最佳实践