我有一個表 Locality-market 列為:
Locality_id
Locality_name
market_id
market_name
我試圖更新locality-name到market_name我使用的是查詢:
update table_1
set locality_name = market_name
where locality_name = ''
但問題是我locality_name對類似的東西越來越不同locality_id
相似 locality_id 的不同 locality_name
我想要一個 locality_name locality_id
1414, Nord Ouest, 110, 和平港 1415, 西部 , 109, 太子港 1416, Sud, 102, Cayes 1417, Sud Est, 105, 雅克梅勒 1425, *空白* , 2601, 圣佩德羅蘇拉 1426,*空白*,2608,特古西加爾巴 1484, *空白*, 4676, Mayabunder 1484,*空白*,1392,布萊爾港 1485, *空白*, 4666, Jadcherla 1485,*空白*,4671,卡里姆訥格爾 1485,*空白*,4692,蘇里亞佩特 1485, *空白*, 4695, 蒂魯帕蒂 1485,*空白*,4699,維沙卡帕特南
我想以這樣的方式來更新本地的名字,我總是只有一個locality_name,每locality_id
1414, Nord Ouest, 110, 和平港 1415, Ouest, 109, 太子港 1416, Sud, 102, Cayes 1417, Sud Est, 105, 雅克梅勒 1425, 圣佩德羅蘇拉, 2601, 圣佩德羅蘇拉 1426, 特古西加爾巴, 2608, 特古西加爾巴 1484, 馬亞伯德, 4676, 馬亞伯德 1484, Mayabunder, 1392, 布萊爾港 1485, Jadcherla, 4666, Jadcherla 1485, Jadcherla, 4671, 卡里姆訥格爾 1485, Jadcherla, 4692, Suryapet 1485, Jadcherla, 4695, 蒂魯帕蒂 1485, Jadcherla, 4699, 維沙卡帕特南
uj5u.com熱心網友回復:
您可以像FIRST_VALUE在 CTE 中一樣使用視窗函式。
然后更新 CTE 來更新表。
;with cte as (
select locality_id, locality_name, market_id, market_name
, new_locality_name = first_value(market_name)
over (partition by locality_id
order by market_name asc)
from table_1
where (locality_name is null or locality_name = '')
and (market_name is not null)
)
update cte
set locality_name = new_locality_name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/372106.html
標籤:sql sql-server
