我有两张桌子ta,tb。 ta列 - cId,c1,c2。 c1和c2包含空值,需要填充数据。 tb列 - cId,c3,c4。 c1和c2的数据分别来自c3和c4。
所以,我试着先做一个简单的内连接。两个表分别别名为al_ta和al_tb。然后,我提出了更新声明 -
UPDATE ta SET
al_ta.c1 = al_tb.c3,
al_ta.c2 = al_tb.c4
FROM ta AS al_ta
INNER JOIN tb AS al_tb
ON al_tb.cId = al_tb.cId
这不起作用,我收到错误 - 无法绑定多部分标识符al_ta.c1。我如何使这项工作?
示例表 -
ta
cId c1 c2
1 NULL NULL
2 NULL NULL
3 NULL NULL
TB
cId c3 c4
1 11 111
2 22 222
3 33 333
4 44 444
答案 0 :(得分:2)
引用列时,如果在JOIN中抽象了表名,则需要使用别名而不是基表名。猜测你的联接可能是什么样子,你可能想要这样写:
UPDATE ta SET
ta.c1 = tb.c3,
ta.c2 = tb.c4
FROM dbo.some_long_table_name_a AS ta
INNER JOIN dbo.some_long_table_name_b AS tb
ON ta.cId = tb.cId
WHERE ta.c1 IS NULL OR ta.c2 IS NULL;
我不明白说的目的:
FROM ta AS al_ta
为什么你会在这里使用一个比原始表名更难写的别名呢?
答案 1 :(得分:0)
请尝试
update ta set
ta.c1 = b.c3,
ta.c2 = b.c4
from ta a join tb b on a.cid = b.cid