开发者

PostgreSQL: Using subquery abbreviation ('AS') in the WHERE clause

Consider the following query in PostgreSQL:

SELECT 
    a, b, 
   (A VERY LONG AND COMPLICATED SUBQUERY) AS c,
   (ANOTHER VERY LONG AND COMPLICATED SUBQUERY) AS d
FROM table

I want to have c and d in the WHERE clause, like:

WHERE c AND d;

But, as far as I know, I can only do:

WHERE A VERY LONG AND COMPLICATED SUBQUERY) AND 
   (ANOTHER VERY LONG AND C开发者_StackOverflow社区OMPLICATED SUBQUERY)

Which is clumsy, code-replicating, breaking the single-choice principle and utterly ugly.

By the way, the same problem applies to the SELECT clause: I can not use abbreviations for previously-defined subqueries.


You could use a subquery:

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

You could also do this with a CTE.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜