OpenAICloudflare Developer PlatformMay 15, 2026, 12:00 AM

R2 SQL - R2 SQL now supports JOINs, subqueries, and multi-table queries

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

openaienmodel: gpt-5-mini-2025-08-07

R2 SQL - R2 SQL now supports JOINs, subqueries, and multi-table queries

Key Points

  • JOINs across Iceberg tables
  • Subqueries in SELECT/WHERE/HAVING
  • Multi-table CTEs, self/multi-way joins

Summary

R2 SQL now supports joining multiple Apache Iceberg tables stored in R2 Data Catalog, plus subqueries and multi-table CTEs. Queries execute on Cloudflare's global network with no infrastructure to manage, enabling richer analytical patterns directly over R2 data (joins, EXISTS/IN, derived tables, self- and multi-way joins).

Key Points

  • Supported JOIN types: INNER, LEFT, RIGHT, FULL OUTER, CROSS, and implicit (comma-separated) joins.
  • Subqueries: IN/NOT IN, EXISTS/NOT EXISTS, scalar subqueries in SELECT/WHERE/HAVING, and derived tables in FROM.
  • Multi-table CTEs: WITH clauses can reference multiple tables and include JOINs; self-joins and joins across three or more tables are supported.
  • Practical tips for engineers:
    • Push predicates into individual scans or subqueries to reduce data movement.
    • Use table aliases for clarity in self- and multi-way joins.
    • Review the SQL reference and the "Limitations and best practices" guide for syntax details and performance guidance.

Examples

  • Two-table aggregation: SELECT z.domain, COUNT(*) FROM my_namespace.zones z INNER JOIN my_namespace.http_requests h ON z.zone_id = h.zone_id GROUP BY z.domain.
  • EXISTS subquery: WHERE EXISTS (SELECT 1 FROM my_namespace.firewall_events f WHERE f.zone_id = z.zone_id AND f.action = 'block').
  • Multi-table CTE: WITH top_zones AS (...), zone_threats AS (...) SELECT tz.zone_id FROM top_zones tz LEFT JOIN zone_threats zt ON tz.zone_id = zt.zone_id.

For full syntax and performance guidance, refer to the SQL reference and the Limitations and best practices documentation.

Full Translation

Translations

A translation section that keeps the flow of the original article.

openaijamodel: gpt-5-mini-2025-08-07

R2 SQL — JOIN、サブクエリ、マルチテーブルクエリをサポート

公開日: 2026-05-15

R2 SQL が JOIN、サブクエリ、マルチテーブルクエリをサポート

概要

R2 SQL は Cloudflare のサーバーレス分散型 SQL エンジンで、R2 Data Catalog に格納された Apache Iceberg ↗ テーブルをクエリできます。R2 SQL は Cloudflare のグローバルネットワーク上で直接実行され、インフラ管理は不要のため、データを外部のデータウェアハウスにエクスポートすることなく R2 上のデータを解析できます。

今回のアップデートにより、複数の Iceberg テーブルを単一のクエリで結合できるようになりました。JOIN、サブクエリ、マルチテーブル CTE(WITH 句)を組み合わせて、複雑な分析クエリを構築できます。

新機能(主な対応項目)

  • 結合(JOIN)
    • INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN
    • 暗黙の結合(FROM をカンマ区切りにし WHERE に条件を記述)
  • サブクエリ
    • IN / NOT IN, EXISTS / NOT EXISTS
    • SELECT / WHERE / HAVING 内のスカラーサブクエリ
    • 派生テーブル(FROM 内のサブクエリ)
  • マルチテーブル CTE
    • WITH 句で複数のテーブルを参照し、JOIN を含めることが可能
  • セルフジョイン(同一テーブルを別名で自己結合)
  • マルチウェイジョイン(3 テーブル以上を単一クエリで結合)

Two-table JOIN with aggregation

SELECT z.domain, z.plan, COUNT(*) AS request_count
FROM my_namespace.zones z
INNER JOIN my_namespace.http_requests h ON z.zone_id = h.zone_id
WHERE z.plan = 'enterprise'
GROUP BY z.domain, z.plan
ORDER BY request_count DESC
LIMIT 20

EXISTS サブクエリ

SELECT z.domain, z.plan
FROM my_namespace.zones z
WHERE EXISTS (
  SELECT 1
  FROM my_namespace.firewall_events f
  WHERE f.zone_id = z.zone_id
    AND f.action = 'block'
)
ORDER BY z.domain
LIMIT 20

マルチテーブル CTE と JOIN

WITH top_zones AS (
  SELECT zone_id, COUNT(*) AS req_count
  FROM my_namespace.http_requests
  GROUP BY zone_id
  ORDER BY req_count DESC
  LIMIT 50
), zone_threats AS (
  SELECT zone_id, COUNT(*) AS threat_count
  FROM my_namespace.firewall_events
  WHERE risk_score > 0.5
  GROUP BY zone_id
)
SELECT tz.zone_id, tz.req_count, COALESCE(zt.threat_count, 0) AS threat_count
FROM top_zones tz
LEFT JOIN zone_threats zt ON tz.zone_id = zt.zone_id
ORDER BY tz.req_count DESC
LIMIT 20

参照

  • 完全な構文リファレンスは SQL リファレンス を参照してください。
  • 結合のパフォーマンスに関するガイダンスは "Limitations and best practices" を参照してください。