将Postgres分解为可读的snipptes

时间:2016-04-28 14:41:43

标签: postgresql

我有一个相对的,不复杂但很长的查询字符串,如:

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;

稍后这个查询会变得更复杂,所以我正在寻找一种技术来将查询拆分为更易读的部分。

1 个答案:

答案 0 :(得分:0)

你正在寻找Common Table Expressions个什么?

  

WITH提供了一种编写辅助语句以便在更大的范围内使用的方法   查询。这些语句通常称为公用表   表达式或CTE可以被认为是定义临时表   仅存在于一个查询中。 WITH中的每个辅助语句   子句可以是SELECT,INSERT,UPDATE或DELETE;和WITH子句   本身附加到一个主语句,也可以是SELECT,   INSERT,UPDATE或DELETE