如何将CTE转换为嵌套SELECT [英] how to convert CTE to nested SELECT

查看:11
本文介绍了如何将CTE转换为嵌套SELECT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下发布的查询。我想使用嵌套的SELECT语句,而不是CTE。我希望外部SELECT语句说明表grid_cell_data中包含的列 我不想使用j.*我想使用列名

查询

WITH j AS (
 SELECT
   ST_AsMVTGeom(
     st_geomfromtext(geometryofcellrepresentativetobuffer),
     ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096,4096)))
 FROM grid_cell_data where id = 3
)
SELECT ST_AsMVT(j.*) FROM j

GRID_CELL_DATA表

CREATE TABLE IF NOT EXISTS grid_cell_data (
   id SERIAL PRIMARY KEY,
   isTreatment boolean,
   isBuffer boolean,
   geometryOfCellRepresentativeToTreatment geometry,
   geometryOfCellRepresentativeToBuffer geometry 
)

推荐答案

只需选择CTE/子查询中需要的所有记录,在外部查询中可以继续使用jj.*。如果需要进一步选择特定列,请将它们放在SELECT中的圆括号中,以便它表示ST_AsMVT的记录,例如

WITH j AS (
 SELECT *,
   ST_AsMVTGeom(
     st_geomfromtext(geometryofcellrepresentativetobuffer),
     ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096,4096))) AS mvt_geom
 FROM grid_cell_data where id = 3
)
SELECT ST_AsMVT((id,isTreatment,isBuffer,mvt_geom)) 
FROM j  

这篇关于如何将CTE转换为嵌套SELECT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆