Sql server 基于另一个表数据更新一个表中的数据
我有如下表A和表B。两者都有帐号和ID。 我想从表A中找出表B中账号的ID,并用表A中的ID值更新表B。我想使表A看起来像表B。如何实现这一点 我试过了Sql server 基于另一个表数据更新一个表中的数据,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有如下表A和表B。两者都有帐号和ID。 我想从表A中找出表B中账号的ID,并用表A中的ID值更新表B。我想使表A看起来像表B。如何实现这一点 我试过了 select distinct A.ID,A.ACCTNO,B.ACCTNO from TableA as A inner join TableB as B on A.ACCTNO = B.ACCTNO 我的输出应该是: 使用带更新的连接 质疑 更新 用于填充空行 质疑 基于联接的更新。。。您还可以忽略ACCTNO中的null以获得更好的
select distinct A.ID,A.ACCTNO,B.ACCTNO from TableA as A
inner join TableB as B on A.ACCTNO = B.ACCTNO
我的输出应该是:
使用带更新的连接
质疑
更新
用于填充空行
质疑
基于联接的更新。。。您还可以忽略ACCTNO中的null以获得更好的性能
update B
set B.ID=A.ID
from TableB as B
join TableA as A
on A.ACCTNO = B.ACCTNO
where B.ACCTNO is not null;
使用此查询:-
您需要将这两个查询运行到所需的输出
INSERT INTO TableB (ID,ACCTNO)
SELECT
a.ID,
a.ACCTNO
FROM TableA as a
LEFT JOIN TableB as b on a.ACCTNO = b.ACCTNO
WHERE b.ACCTNO IS NULL;
及
用CTE
WITH CTE
AS (SELECT T1.ID AS TABLEA_ID,
T1.ACCTNO AS TABLEA_ACCID,
T2.ID AS TABLEB_ID,
T2.ACCTNO AS TANLEB_ACCID
FROM TableA T1
INNER JOIN TableB T2
ON T1.ACCTNO= T2.ACCTNO)
UPDATE CTE
SET TABLEA_ID= TABLEB_ID
希望它的工作
快乐编码 以下SQL将使用acctno匹配的表A中的ID填充表B:
UPDATE table_b
SET ID=table_a.id
FROM table_b
INNER JOIN table_a on table_b.acctno=table_a.acctno
那么这两个空列值呢?您期望的输出是什么。??我可以暂时忽略ACCTNO中的空值。但我想从表A中填写对应于ACCTNO的表B中的ID。
INSERT INTO TableB (ID,ACCTNO)
SELECT
a.ID,
a.ACCTNO
FROM TableA as a
LEFT JOIN TableB as b on a.ACCTNO = b.ACCTNO
WHERE b.ACCTNO IS NULL;
update b set b.ID = a.ID
from TableB as b
left join TableA as a ON a.ACCTNO = b.ACCTNO
where b.ACCTNO IS NOT null;
WITH CTE
AS (SELECT T1.ID AS TABLEA_ID,
T1.ACCTNO AS TABLEA_ACCID,
T2.ID AS TABLEB_ID,
T2.ACCTNO AS TANLEB_ACCID
FROM TableA T1
INNER JOIN TableB T2
ON T1.ACCTNO= T2.ACCTNO)
UPDATE CTE
SET TABLEA_ID= TABLEB_ID
UPDATE table_b
SET ID=table_a.id
FROM table_b
INNER JOIN table_a on table_b.acctno=table_a.acctno