我刚刚意识到我一直在捕捉表格中一列的错误数据。但是,我已经解决了这个问题,但迄今为止我所捕获的数据仍然不正确。如何使用其他表格数据更新一列数据TSQL
让我们的名字我的表TableIWantToCorrect
和TableWithIDs
在TableIWantToCorrect
,我有一个外键TableWithIDs
。这是不正确的。
我可以通过比较TableIWantToCorrect
中列的子字符串与TableWithIDs
中的列来更正数据。
所以目前,我有
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
所以我想更新TableIWantToCorrect
有正确的ForeignKey的值时,在该子名称等于子字符串在比较名称。子串的位置总是相同的,所以我可以使用Substring
方法。
我尝试:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
结果:
子查询返回多个值。当 子查询遵循=,!=,<,< =,>,> =或当子查询用作 表达式时,这是不允许的。该语句已终止。
我知道我做了些傻事。我在这里做错了什么?
您的在线查询做到这一点,因此返回多于一行的问题。运行此查询找出哪些是重复的'选择CompareName,COUNT(1) \t FROM TableWithIDs GROUP BY CompareName HAVING COUNT(1)> 1 \t ' – Chandu 2012-07-11 14:14:19
你还,如果您更改子查询得到的错误使用'SELECT DISTINCT id'?如果是这样,则有多个可能的匹配,并且使用哪一个不明确。 – 2012-07-11 14:43:19
[UPDATE from SELECT using SQL Server]可能的重复(http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server) – 2014-06-05 16:55:45