PostgreSQL:在WHERE子句中使用子查询缩写('AS')

Ada*_*tan 4 sql postgresql

考虑PostgreSQL中的以下查询:

SELECT 
    a, b, 
   (A VERY LONG AND COMPLICATED SUBQUERY) AS c,
   (ANOTHER VERY LONG AND COMPLICATED SUBQUERY) AS d
FROM table
Run Code Online (Sandbox Code Playgroud)

我希望cdWHERE条款中,如:

WHERE c AND d;
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,我只能这样做:

WHERE A VERY LONG AND COMPLICATED SUBQUERY) AND 
   (ANOTHER VERY LONG AND COMPLICATED SUBQUERY)
Run Code Online (Sandbox Code Playgroud)

这是笨拙的,代码复制,打破单选原则和完全丑陋.

顺便说一下,同样的问题也适用于该SELECT子句:我不能将缩写用于先前定义的子查询.

Mar*_*ers 13

您可以使用子查询:

SELECT a,b,c,d FROM
    (SELECT 
        a, b, 
        (A VERY LONG AND COMPLICATED SUBQUERY) AS c,
        (ANOTHER VERY LONG AND COMPLICATED SUBQUERY) AS d
        FROM table
    ) AS T1
WHERE c AND d
Run Code Online (Sandbox Code Playgroud)

您也可以使用CTE执行此操作.