2016-04-28 56 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