2016-04-28 29 views
1

我有個親戚,不復雜但很長的查詢字符串,如:拆分,Postgres的查詢到可讀snipptes

SELECT array_to_json(array_agg(row_to_json(exp))) 
    FROM (
     SELECT label as name, (
    SELECT array_to_json(array_agg(row_to_json(opt))) 
     FROM (
      SELECT value as name, count as size FROM countoptions 
    ) opt 
    ) as children 
    FROM countoptions GROUP BY label 
    ) exp; 

後來這個查詢將變得更加複雜,所以我在尋找一種技術,更將查詢可讀部件。

回答

0

Common Table Expressions你在找什麼?

WITH提供了一種編寫輔助語句的方法,以便在較大的 查詢中使用。這些通常被稱爲公用表 表達式或CTE的表述可以被認爲是定義僅存在於一個查詢中的臨時表 。 WITH 子句中的每個輔助語句都可以是SELECT,INSERT,UPDATE或DELETE;和WITH子句 自身附加到主語句也可以是SELECT,INSERT ,UPDATE或DELETE

+1

只是不要忘記,CTE成本的臨時空間,如果你查詢的大型數據集。 它們對可讀性很好,但內部沒有很好地進行優化。 – Zorg