2016-08-16 7 views
0

私はPostgresテーブルでarray_aggと空間参照の結果を使って数千の行を更新する必要があります。Postgres Update親変数を渡して選択する

クエリでは親テーブルのジオメトリを取得し、一致する行IDの配列を別のテーブルに返す必要があります。 IDを返さないか、潜在的に2〜3のIDを返します。

私はUPDATE FROMを使用しようとしましたが、SELECTの親テーブルのgeomカラムをサブクエリに渡すことができません。私は2つのテーブルの間にJOINを行う方法は見当たりません。ここで

は、私が現在持っているものです。

UPDATE lrc_wales_data.records 
SET lrc_array = subquery.lrc_array 

FROM (
    SELECT array_agg(wales_lrcs.gid) AS lrc_array 
    FROM layers.wales_lrcs 
    WHERE st_dwithin(records.geom_poly, wales_lrcs.geom, 0) 
) AS subquery 

WHERE records.lrc = 'nrw'; 

私が手にエラーがある:

ERROR: invalid reference to FROM-clause entry for table "records" 
LINE 7: WHERE st_dwithin(records.geom_poly, wales_lrcs.geom, 0) 

でも可能、このですか?

多くのおかげで、 スティーブ

答えて

2

はFROM SETを使用する必要はありませんでした実現しました。 SET内で直接サブクエリを使用することができます:

UPDATE lrc_wales_data.records 
SET lrc_array = (
    SELECT array_agg(wales_lrcs.gid) AS lrc 
    FROM layers.wales_lrcs 
    WHERE st_dwithin(records.geom_poly, wales_lrcs.geom, 0) 
) 

WHERE records.lrc = 'nrw'; 
関連する問題