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

SQL中t()及t(n,a)的作用是什么?附UNNEST关联查询示例解析

关于SQL语句中 t (n, a) 的作用说明

首先要明确:这里的t不是函数,是表别名,括号里的内容是字段别名,完整的语法作用拆分如下:

  • 语句中的UNNEST(numbers, animals)是Presto等SQL引擎支持的数组展开函数,这里传入两个数组参数,会按元素位置并行把两个数组展开为多行:两个数组长度不一致时,短数组遍历完后,对应位置会补NULL,和你贴的查询结果一致。
  • AS t (n, a) 是给UNNEST返回的临时结果集设置别名和字段名:
    • 临时结果集的表别名叫t,可以省略不写,写了方便多表关联时指定字段归属
    • 括号里的n、a是给结果集的两个列依次设置的别名:n对应numbers数组展开后的元素值,a对应animals数组展开后的元素值,你上层SELECT语句里引用的n、a字段就来源于这里的别名定义。

如果换种写法你会更容易理解,下面的语句和你给出的示例执行结果完全一致:

SELECT numbers, animals, t.col1 AS n, t.col2 AS a
FROM (
  VALUES
    (ARRAY[2, 5], ARRAY['dog', 'cat', 'bird']),
    (ARRAY[7, 8, 9], ARRAY['cow', 'pig'])
) AS x (numbers, animals)
CROSS JOIN UNNEST(numbers, animals) AS t;

UNNEST多参数返回的结果默认字段名就是col1、col2、……coln,你示例里的写法只是提前给字段起了更易读的别名而已。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:15:04