gpt4 book ai didi

2个表中名称列之间的SQL差异函数

转载 作者:行者123 更新时间:2023-12-01 22:20:42 24 4
gpt4 key购买 nike

我有 2 个表,其中包含一个名称部分的列,即 John Doe 一行用于 John,一行用于 Doe。这 2 个表中的名称不同。我需要从一个表中获取名称部分,然后计算另一个表中名称部分的差异分数。现在我正在使用内部和外部游标来遍历两个表中的每一个。这有效,但需要很长时间才能运行。

是否有其他方法可以加快速度?

我正在尝试做的一个例子:

表一

Name
----
John
Doe
Jan
Smith

表2

Name
-----
Henry
Ford
Ransom
Eli
Olds

这是我需要的:

DIFFERENCE('John','Henry')
DIFFERENCE('John','Ford')
DIFFERENCE('John','Ransom')
DIFFERENCE('John','Eli')
DIFFERENCE('John','Olds')
DIFFERENCE('Doe','Henry')
DIFFERENCE('Doe','Ford')
DIFFERENCE('Doe','Ransom')
DIFFERENCE('Doe','Eli')
DIFFERENCE('Doe','Olds')
DIFFERENCE('Jane','Henry')
DIFFERENCE('Jane','Ford')
DIFFERENCE('Jane','Ransom')
DIFFERENCE('Jane','Eli')
DIFFERENCE('Jane','Olds')
DIFFERENCE('Smith','Henry')
DIFFERENCE('Smith','Ford')
DIFFERENCE('Smith','Ransom')
DIFFERENCE('Smith','Eli')
DIFFERENCE('Smith','Olds')

现在,我将这些差异分数保存在临时表中以用于测试目的。抱歉缺少格式,我是新来这里发帖的。感谢您的帮助。

最佳答案

我认为 - 您实际上正在寻找的是 CROSS JOIN .

简而言之,这是一个不需要连接条件的join-everything-with-everything 连接。结果是每个可能的值组合,换句话说:笛卡尔积

试试这个:

DECLARE @tbl1 TABLE(Name VARCHAR(100));
INSERT INTO @tbl1 VALUES
('John')
,('Doe')
,('Jan')
,('Smith');

DECLARE @tbl2 TABLE(Name VARCHAR(100));
INSERT INTO @tbl2 VALUES
('Henry')
,('Ford')
,('Ransom')
,('Eli')
,('Olds');

SELECT t1.Name
,t2.Name
,DIFFERENCE(t1.Name,t2.Name) AS DiffName
FROM @tbl1 AS t1
CROSS JOIN @tbl2 AS t2

结果

Name    Name    DiffName
John Henry 2
Doe Henry 2
Jan Henry 2
Smith Henry 2
John Ford 2
Doe Ford 2
Jan Ford 2
Smith Ford 2
John Ransom 1
Doe Ransom 0
Jan Ransom 1
Smith Ransom 1
John Eli 2
Doe Eli 2
Jan Eli 2
Smith Eli 1
John Olds 0
Doe Olds 0
Jan Olds 0
Smith Olds 1

关于2个表中名称列之间的SQL差异函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40294122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com