Что это "т" делает?

У меня проблемы с пониманием следующего примера из документации PostgreSQL:

-- set returning function WITH ORDINALITY
SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n);
       ls        | n
-----------------+----
 pg_serial       |  1
 pg_twophase     |  2
 postmaster.opts |  3
 pg_notify       |  4
...

Вещи в скобках t(...) стать именами столбцов, но что такое t сам? Я спрашиваю здесь, потому что документы не объясняют это, а однобуквенная функция не гуглится. На самом деле, документы даже не объясняют, что должно произойти после AS; единственное, что мы получаем, это один пример.

Кажется, я могу заменить t любым другим идентификатором, и он все еще работает.

2 ответа

Решение

Синтаксис, который вы ищете:

function_call [WITH ORDINALITY] [[AS] table_alias [(column_alias [, ... ])]]

https://www.postgresql.org/docs/10/static/queries-table-expressions.html

t произвольный псевдоним таблицы; Вы можете дать ему любое допустимое имя.

Это псевдоним для набора, чтобы иметь возможность ссылаться на него в списке столбцов, например:

SELECT t.*,pg_database .datname 
FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n) 
join pg_database on true where datname = 'postgres'
          ls          | n  | datname
----------------------+----+----------
 pg_dynshmem          |  1 | postgres
 postmaster.pid       |  2 | postgres
 PG_VERSION           |  3 | postgres
 base                 |  4 | postgres
Другие вопросы по тегам