时,我有创建使用创建表一个表,并与这些列:多行错误填充表
create table myschema.mytable(
id serial PRIMARY KEY,
row_num integer,
col_num integer,
pix_centroid geometry,
pix_val double precision
)
当我试图填充它:
insert into pixelbased (id, row_num, col_num, pix_centroid, pix_val)
values (
DEFAULT,
(select((ST_PixelAsPolygons(rast, 1)).x) from mytable where rid=3),
(select((ST_PixelAsPolygons(rast, 1)).x) from mytable where rid=3),
(select(ST_Centroid((ST_PixelAsPolygons(rast, 1)).geom)) from rwanda8 where rid=3),
(select(ST_PixelAsPolygons(rast, 1)).val from mytable where rid=3)
)
我遇到以下错误:
错误:由用作表达式的子查询返回多于一行的行。
我知道,因为我有不止一行的每列,这是有道理的有这样的错误。但我真的需要按照提及的方式计算所有列。任何人都知道我该怎么办? 其实我想结果插入表中以下查询:
select
(ST_PixelAsPolygons(rast, 1)).val as geomval1,
(ST_PixelAsPolygons(rast, 1)).x as X,
(ST_PixelAsPolygons(rast, 1)).y as Y,
(ST_Centroid((ST_PixelAsPolygons(rast, 1)).geom)) as geom
from rwanda8
where rid=3
任何人都知道我应该怎么办?
谢谢你Clodoaldo。它为我工作。如果我想推广查询以包含所有的rid值,应该怎么做?我想为每个具有不同名称的rid分别设置'(ST_PixelAsPolygons(rast,1)).val as geomval1'。列数超过1000个,我无法手动完成。 –
@ f.ashouri如果你有超过1000列,那么你做错了。创建另一个问题并解释你的数据,要求它正常化。 –
对不起,我有1000多个ROWS,每个人都有特定的摆脱。我认为现在很清楚。我想为每个摆脱单独的_geomval_列。 –