别名后的括号

Wol*_*Tru 4 sql postgresql

我看到了一篇关于使用 generate_series 创建表数据的简洁文章。作者在解释代码方面做得很好,但是有些事情我仍然不明白。别名后的Xcomp3syl(x)z2(x)是分配派生表的列名X?还有这个语法叫什么?我无法在没有关键字的情况下使用谷歌搜索它的文档

SELECT(
SELECT concat_ws(' ',name_first, name_last) as generated
FROM (
    SELECT string_agg(x,'')
    FROM (
        select start_arr[ 1 + ( (random() * 25)::int) % 16 ]
        FROM
        (
            select '{CO,GE,FOR,SO,CO,GIM,SE,CO,GE,CA,FRA,GEC,GE,GA,FRO,GIP}'::text[] as start_arr
        ) syllarr,
        -- need 3 syllabes, and force generator interpretation with the '*0' (else 3 same syllabes)
        generate_series(1, 3 + (generator*0))
    ) AS comp3syl(x)
) AS comp_name_1st(name_first),
(
    SELECT x[ 1 + ( (random() * 25)::int) % 14 ]
    FROM (
        select '{Ltd,& Co,SARL,SA,Gmbh,United,Brothers,& Sons,International,Ext,Worldwide,Global,2000,3000}'::text[]
    ) AS z2(x)
) AS comp_name_last(name_last)
)
FROM generate_series(1,10000) as generator
Run Code Online (Sandbox Code Playgroud)

对这里感兴趣的任何人都是文章的链接:https : //regilero.github.io/postgresql/english/2017/06/26/postgresql_advanced_generate_series/

Gre*_*ius 5

文档

表别名的另一种形式为表的列以及表本身提供临时名称:

FROM table_reference [AS] 别名( column1 [, column2 [, ...]] )

如果指定的列别名少于实际表的列数,则不会重命名其余列。此语法对于自联接或子查询特别有用。

在您提供的代码中,generate_series()调用在子查询中没有别名,因此作者在为子查询设置别名时命名它们。