Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 将Postgres查询拆分为可读的片段_Postgresql - Fatal编程技术网

Postgresql 将Postgres查询拆分为可读的片段

Postgresql 将Postgres查询拆分为可读的片段,postgresql,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

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

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;
稍后,这个查询将变得更加复杂,因此我正在寻找一种将查询拆分为更可读部分的技术

你在找什么

WITH提供了一种编写辅助语句的方法,以便在更大的应用程序中使用 查询这些语句通常被称为公共表 表达式或CTE可被视为定义临时表 只存在一个查询。一个带有 子句可以是SELECT、INSERT、UPDATE或DELETE;以及WITH子句 它本身附加到主语句,主语句也可以是SELECT, 插入、更新或删除

你在找什么

WITH提供了一种编写辅助语句的方法,以便在更大的应用程序中使用 查询这些语句通常被称为公共表 表达式或CTE可被视为定义临时表 只存在一个查询。一个带有 子句可以是SELECT、INSERT、UPDATE或DELETE;以及WITH子句 它本身附加到主语句,主语句也可以是SELECT, 插入、更新或删除


但不要忘记,如果查询大型数据集,CTE需要临时空间。它们的可读性很好,但内部优化得不好。但不要忘记,如果查询大型数据集,CTE会占用临时空间。它们的可读性很好,但内部优化不好。