基于两列的相等性更新一个SQL表,其中两列来自另一个表

时间:2014-05-07 01:07:53

标签: sql sql-server sql-server-2012 sql-update

我使用的是SQL Server 2012,我遇到了这个问题。

我想用表2第3列(c3)中的值更新Table1,第3列(包含大量重复行),其中Table1.c1 = Table2.c1和Table1.c2 = Table2.c2(Table2包含每行的解释,Table1有更多的行,也是重复的。)

Here's example

我尝试了这个查询,但它不起作用:

UPDATE T1
SET c3 = T2.c3
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.c1 = T2.c1 AND T1.c2 = T2.c2

编辑:

上面的查询还可以!我的列中有一些不可见的字符串。谢谢Xiaoguang Qiao

1 个答案:

答案 0 :(得分:2)

我没有看到查询本身有任何问题。首先检查数据将通过选择

进行更新
SELECT T1.C3, T2.C3
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.c1 = T2.c1 AND T1.c2 = T2.c2

如果它返回0行,我认为你需要逐个检查C1和C2。也许在C1或C2列中有不可见的空格。请尝试以下查询

SELECT T1.C1, T2.C1, CASE WHEN T1.C1 = T2.C1 THEN 'Same' ELSE NULL END AS "Same C1",
T1.C2, T2.C2, CASE WHEN T1.C2 = T2.C2 THEN 'Same' ELSE NULL END AS "Same C2"
FROM Table1 AS T1, Table2 T2