GPH*_*GPH 1 sql-server-2008 sql-update
我在处理SQL时很少使用update语句,这样做时会有点紧张.在之前的一期中,我提出了它,我决定在一些表中添加一个标识列作为代理键.考虑到170万行,我希望尽可能顺利地完成这项工作.所以我需要做的是运行一个循环更新并使用相关数据更新每个字段.
表1:tblPostCodeLookup
Postcode | Postcode ID
AB44 | 1
AB45 | 2
Run Code Online (Sandbox Code Playgroud)
表2:tblPostcodeStreetView
ID | Postcode | Postcode ID
1 | AB446TR | 1
2 | AB447TY | 1
3 | AB457HH | 2
Run Code Online (Sandbox Code Playgroud)
我已经做了基本的更新
UPDATE tblPostcodesStreetsView
SET PostcodeID = 1
WHERE (postcode LIKE 'AB44%')
Run Code Online (Sandbox Code Playgroud)
然而,让这个贯穿并更新每一个导致我的问题!
UPDATE psv
SET PostcodeID = pcl.PostcodeID
FROM tblPostcodesStreetsView psv
INNER JOIN
tblPostCodeLookup pcl
on
pcv.postcode LIKE pcl.postcode + '%'
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.除非有多行与tblPostCodeLookup其中的相同行匹配tblPostcodesStreetsView- 在这种情况下,PostCodeID分配的行没有很好地定义.
UPDATE...FROM是SQL Server方言,它不是标准SQL.标准方法将类似于:
UPDATE tblPostcodesStreetsView
SET PostcodeID = (select pcl.PostcodeID from tblPostCodeLookup pcl
where tblPostcodesStreetsView.postcode LIKE pcl.postcode + '%')
Run Code Online (Sandbox Code Playgroud)
对于我提到的多个匹配的上述场景,这至少会产生错误.
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |