4
考慮PostgreSQL的以下查詢:PostgreSQL的:使用子查詢的縮寫( 'AS')在WHERE子句中
SELECT
a, b,
(A VERY LONG AND COMPLICATED SUBQUERY) AS c,
(ANOTHER VERY LONG AND COMPLICATED SUBQUERY) AS d
FROM table
我想有WHERE
子句中c
和d
,如:
WHERE c AND d;
但是,據我所知,我只能這樣做:
WHERE A VERY LONG AND COMPLICATED SUBQUERY) AND
(ANOTHER VERY LONG AND COMPLICATED SUBQUERY)
哪個笨拙,代碼複製,breaking the single-choice principle和完全醜陋。
順便說一句,同樣的問題適用於SELECT
子句:我無法對以前定義的子查詢使用縮寫。
工作。任何想法爲什麼更合理的語法不適用於PostgreSQL環境? – 2010-01-27 10:43:18
對WHERE子句的評估在邏輯上優先於 SELECT列表的評估,所以期望SELECT輸出 在WHERE中可用真的很無意義。 http://archives.postgresql.org/pgsql-general/2002-11/msg01411.php – 2010-01-27 10:46:22
@Adam:我添加了另一個替代方案(CTEs)給我的答案。你也應該檢查一下HAVING子句(它在Gerard的鏈接中也有提到)。 – 2010-01-27 10:54:41