Sql server 不带连接函数的比较表

Sql server 不带连接函数的比较表,sql-server,Sql Server,我想配第一桌,第二桌。第一个表必须与第二个表中的数据匹配,我给出了第一个配对。因此我不能使用join函数 我正在比较这两个表,但由于数据量的原因,计数过程需要一天以上的时间。如何在更短的时间内完成这项工作?谢谢你的帮助 注意:我不能加入函数。因为我想要一对一的匹配。请看这幅画 我想你确实需要一个连接,在update语句中 update #T2 set column4 = #T1.Column4 from #T2 inner join #T1 on #T1.Column1 = #

我想配第一桌,第二桌。第一个表必须与第二个表中的数据匹配,我给出了第一个配对。因此我不能使用join函数

我正在比较这两个表,但由于数据量的原因,计数过程需要一天以上的时间。如何在更短的时间内完成这项工作?谢谢你的帮助

注意:我不能加入函数。因为我想要一对一的匹配。请看这幅画


我想你确实需要一个连接,在update语句中

update #T2
    set column4 = #T1.Column4
from #T2 inner join #T1
     on #T1.Column1 = #T2.Column1 and #T1.Column2 = #T2.Column2 and #T1.Column3 = #T2.Column3
where #T2.Column4 IS NULL

我认为这将与您在查询中尝试的差不多。对于前3列匹配的行,它将T2.column4更改为T1.column4。

我假设您要比较两个表中的数据是否匹配。如果不是,错配是什么

因此,您正在编写一个循环并对其进行比较

我建议你使用一些函数,比如二进制校验和 &进行基于集合的操作以 找出差异,而不是需要时间的电流回路

首先,以下是一个示例:

create table t3 (Code int,Val varchar(50),Val1 varchar(20))
create table t2 (Code int,Val varchar(50),Val1 varchar(20))


insert into t2 Values (1,'20', '25')
insert into t2 Values (2,'50',50)

insert into t3 Values (1,'20',25)
insert into t3 Values (23,'5',50)

Select * from ( Select BINARY_CHECKSUM(val,val1) chk, * from  t3 ) a
full outer join (Select BINARY_CHECKSUM(val,val1) chk, *  from  t2 ) b on a.chk = b.chk

请显示SQL CREATE TABLE语句。更好的是,在sqlfiddle.com中输入它们,将代码粘贴到这里,并提供指向sqlfiddle.com的链接。另外:请删除与回答问题无关的任何内容。删除不相关的字段,将字段重命名为A和B等。提供示例数据和所需结果。联接是SQL中比较表的自然方式。
create table t3 (Code int,Val varchar(50),Val1 varchar(20))
create table t2 (Code int,Val varchar(50),Val1 varchar(20))


insert into t2 Values (1,'20', '25')
insert into t2 Values (2,'50',50)

insert into t3 Values (1,'20',25)
insert into t3 Values (23,'5',50)

Select * from ( Select BINARY_CHECKSUM(val,val1) chk, * from  t3 ) a
full outer join (Select BINARY_CHECKSUM(val,val1) chk, *  from  t2 ) b on a.chk = b.chk