Postgresql
將表中的 id 分配給 PostgreSQL 中另一個表的記錄
從
datos
PostgreSQL 數據庫中的一個表開始,該表包含 9+ M 西班牙鳥類存在的數據,我創建了一個新表,使用該表從該表中提取所有不同的位置create table localidades as select distinct locality, stateProvince, decimalLatitude, decimalLongitude from datos;
之後,我為它創建了一個 id 列
ALTER TABLE localidades ADD COLUMN id SERIAL PRIMARY KEY;
我還為所有這些欄位創建了索引
CREATE INDEX idx_lugar ON datos (locality); create index idx_prov on datos(stateprovince); create index idx_lat on datos(decimalLatitude); create index idx_lon on datos(decimalLongitude); create index idx_lat1 on localidades(decimalLatitude); create index idx_lon1 on localidades(decimalLongitude); CREATE INDEX idx_lugar1 ON localidades (locality); create index idx_prov1 on localidades(stateprovince);
現在我想將相應的
localidades
id 分配給datos
. 我嘗試了以下程式碼但沒有成功(它無休止地執行)update datos set cod_loc = l.id from datos d, localidades l where l.locality = d.locality and l.stateprovince = d.stateprovince and l.decimalLatitude=d.decimalLatitude and l.decimalLongitude=d.decimalLongitude;
應該怎麼做?
datos
您通過指定兩次無意中創建了交叉聯接。嘗試UPDATE datos AS d SET cod_loc = l.id FROM localidades AS l WHERE l.locality = d.locality AND l.stateprovince = d.stateprovince AND l.decimalLatitude = d.decimalLatitude AND l.decimalLongitude = d.decimalLongitude;