You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BigQuery中模拟VALUES子句,该UNNEST写法是否为最简方案?

在BigQuery中模拟VALUES子句的简洁写法对比

你问到的第一种写法,确实是BigQuery里最接近原生VALUES子句风格、同时也最简洁的实现方式:

WITH Roster AS
 (SELECT * FROM UNNEST([
    STRUCT('Adams' as LastName, 50 as SchoolID),
   ('Buchanan', 52),
   ('Coolidge', 52),
   ('Davis', 51),
   ('Eisenhower', 77)
])) SELECT * FROM Roster

对比你之前使用、也是谷歌文档里常见的UNION ALL写法:

WITH Roster AS
 (SELECT 'Adams' as LastName, 50 as SchoolID UNION ALL
  SELECT 'Buchanan', 52 UNION ALL
  SELECT 'Coolidge', 52 UNION ALL
  SELECT 'Davis', 51 UNION ALL
  SELECT 'Eisenhower', 77)
SELECT * FROM Roster

这种写法需要重复编写SELECT和UNION ALL,代码冗余度更高。而你熟悉的PostgreSQL原生VALUES写法:

WITH Roster(LastName, SchoolID) AS (
    VALUES('Adams', 50),
   ('Buchanan', 52),
   ('Coolidge', 52),
   ('Davis', 51),
   ('Eisenhower', 77)
) SELECT * FROM Roster

和BigQuery的UNNEST+STRUCT写法逻辑高度一致,都是通过批量定义行数据来构建临时表,结构紧凑易读,确实是目前BigQuery里最贴近原生VALUES体验的简洁写法。

内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:19:56