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