【问题标题】:Loop through table records and update from another table records in SQL Server循环遍历表记录并从 SQL Server 中的另一个表记录更新
【发布时间】:2016-03-13 05:29:05
【问题描述】:

我有 2 张桌子 tblAddress [(Address nvarchar(500),District nvarchar(50)]tblDisrtict [(District nvarhchar(50)]

一些示例数据:

tbl地址:

HON MANI # no St.Chom Chao Trapeang Thloeng Chaom Chau Dangkao  N/A
CHENG HORN # 18 St 12 Tuek L'ak Muoy Tuol Kouk Phnom Penh   N/A
KHANG HONG # 9 St 50 Boeng Kak Muoy Tuol Kouk Phnom Penh    N/A
SANG MOY #10A St.no Kakab Dangkao Phnom Penh    N/A
NONG NAT #815 St No Stueng Mean Chey Mean Chey Phnom Penh   N/A
CHEA MONG #No St lum Phnom Penh Thmei Phnom Penh Thmei Ruessei Kaev     N/A
SOM KOY # 2E st 16 Phum5 Phsar Kandal Muoy Doun Penh Phnom Penh N/A
LE VANLYDA # 32 st 7 Kdei Chas Bak Khaeng Russei Keo Phnom Penh N/A
LAY NA # 35 st 70 Phum10 Boeng Salang Tuol Kouk Phnom Penh  N/A

tblDistrict:

Chamkar Mon
Doun Penh
Prampir Meakkakra
Tuol Kouk
Dangkao
Mean Chey
Russey Keo
Saensokh
Pur SenChey
Chraoy Chongvar
Praek Pnov
Chbar Ampov

我希望得到如下结果

  1. 从地址中删除名称(大写字母)
  2. 更新 tblAddress 列:District (N/A) 列:来自 tblDistrict 的地址内容区。

    UPDATE tblAddress 
    SET District = @district 
    WHERE '%' + Address + '%' = @district 
    

    但我不知道如何循环通过tblDistrict 将数据传递给@district

请帮忙。

【问题讨论】:

  • 这是一次性交易还是重复要求?
  • @Erik Philips 这只是一次性交易,数据超过 100K。
  • 你能解释一下tblDistrict是如何链接到tblAddress的吗?
  • 这可能会有所帮助:SQL update query using joins
  • @har07 tblDistrict 引用 tblAddress,Address 列内容区字。这就是为什么我要用来自 tblDistrict 的数据更新 tblAddress 中的列 District。

标签: sql-server


【解决方案1】:

如果我正确理解这两个表之间的关系,您可以使用JOIN 而不是循环更好地实现:

UPDATE
    tblAddress
SET
    District = B.District
FROM
    tblAddress A
    JOIN
    tblDistrict B ON A.Address LIKE '%' + B.District + '%'
WHERE
    A.District = 'N/A'

【讨论】:

  • 谢谢。顺便提一句。如何从地址中删除名称(大写字母)?
  • 如何用substring after字符#的结果更新列
  • 名称由全大写字母指定,有些子字符串没有# 符号。那么有什么方法可以找到双重资本?
猜你喜欢
  • 2016-04-27
  • 2019-04-27
  • 2014-05-22
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多