我試圖更新一個表,使一個列的值對應于另一個列的某個值=1。 以下是我目前的代碼:
update myTable
set area = area *
(1/ (select sum(area)
from myTable
where census_tract = 36081116301)
where census_tract = 36081116301;
在這里,我正在更新每個人口普查區。面積列中的多個值被歸于同一個人口普查區。我怎樣才能在不單獨呼叫它們的情況下為每一個人口普查區做到這一點?謝謝!
uj5u.com熱心網友回復:
你似乎想要一個相關的子查詢:
你似乎想要一個相關的子查詢。
update myTable
set area = area *
(select 1.0 / sum(t2. area)
from myTable t2
where t2.census_tract = t.census_tract
);
然而,這通常會使用一個聚合查詢來處理:
update myTable t
set area = area / c.total_area
from (select census_tract, sum( area) as tot_area
from myTable
group by census_tract
) c
where c.census_tract = t.census_tract。
我還建議你將面積比例存盤在另一列中。 在已經存在的area資料上寫,似乎很危險。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/306841.html
標籤:
上一篇:多列的SQLMAX并檢索每一行
