使用子查询更新表

问题描述 投票:0回答:2

我想写一个更新语句,使用两个表A和B,并更新A中的列。

我尝试过子查询,也尝试过使用 join 直接更新。但我不得不取消查询,因为它花了很多时间。

我昨天写了一段代码,由于数据大小,花了很多时间。我想做的就是使用 Table B 更新 Table A 中的行。

查询如下所示

UPDATE C
SET C.Name = C.Name + C.SirName

FROM (
SELECT * FROM A
INNER JOIN B
ON (A.id = B.id)
) C

我很困惑,上面的查询会更新哪个表?

sql sql-server join sql-update
2个回答
1
投票

您必须使用 X 连接(内部连接、左侧连接或您想要的连接)进行更新,如下例所示:

UPDATE b
set 
    b.Amount = b.Amount + a.Amount, 
    b.Paid = 0
FROM TableA a
INNER JOIN TableB b on
    (a.AccountId = b.AccountId AND
    a.Year = b.Year)

1
投票

您应该在

UPDATE
语句中直接引用表A

UPDATE A
SET A.Name = CONCAT(A.Name, B.SirName)
FROM A
INNER JOIN B ON A.id = B.id;
© www.soinside.com 2019 - 2024. All rights reserved.