Skip to main content

WITH ORDINALITY 子句

在查询的 FROM 子句中,WITH ORDINALITY 子句可与集合函数一起使用。将在表中添加一个额外的整数列,从 1 开始对函数返回的行进行编号。默认情况下,生成的列名为 ordinality

有关支持的集合函数列表,请参阅集合函数

下面是一个关于 WITH ORDINALITY 子句如何工作的简单示例。

SELECT * FROM unnest(array[0,1,2]) WITH ORDINALITY;

输出结果如下。

 unnest | ordinality 
--------+------------
0 | 1
1 | 2
2 | 3

如果有一个像这样的表 t

   arr   
---------
{a,b,c}
{d,e}

可以对列 arr 使用 unnest 函数,调用 WITH ORDINALITY 并重命名新生成的列。

SELECT * FROM t CROSS JOIN unnest(t.arr) WITH ORDINALITY AS x(elts, num);

结果如下。

   arr   | elts | num 
---------+------+-----
{a,b,c} | c | 3
{a,b,c} | b | 2
{a,b,c} | a | 1
{d,e} | e | 2
{d,e} | d | 1