Sim*_*ely 5 sql t-sql database sql-server sql-update
我刚刚意识到我一直在为表中的一列捕获错误的数据.我已经解决了这个问题,但到目前为止我捕获的数据仍然不正确.
让我们来命名我的表TableIWantToCorrect和TableWithIDs
在TableIWantToCorrect,我有一个外键TableWithIDs.这是不正确的.
我可以通过比较列的子字符串和列中TableIWantToCorrect的列来更正数据TableWithIDs.
所以目前,我有
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
Run Code Online (Sandbox Code Playgroud)
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
Run Code Online (Sandbox Code Playgroud)
因此,TableIWantToCorrect当Name中的子字符串与Compare name中的子字符串相等时,我想要更新以获得正确的ForeignKey值.子串的位置始终相同,因此我可以使用该Substring方法.
我的尝试:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
Run Code Online (Sandbox Code Playgroud)
结果 :
子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.该语句已终止.
我知道我做了些傻事.我在这里做错了什么?
Tar*_*ryn 13
该错误是因为您的子查询返回了多个记录UPDATE.为了解决这个问题,你可以做到这一点使用JOIN与您的UPDATE
UPDATE t1
SET ForeignKey = t2.id
FROM TableIWantToCorrect t1
INNER JOIN TableWithIDs t2
ON UPPER(t2.CompareName) = UPPER(SUBSTRING(t1.Name, 4, 3))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32549 次 |
| 最近记录: |