我有以下T-SQL脚本:
5
我想制作一个脚本,将第一列中的每个字符串与第二列中的每个字符串进行比较。
问题是,我不知道如何遍历每一行并采用单独的字符串值。 上面的代码仅显示查询结果中的第一个值。
我在做什么错了?
答案 0 :(得分:2)
要比较一列中的所有值和另一列中的所有值,您不需要游标,只需进行简单的连接即可完成工作-由于您既没有提供示例数据,也没有期望的结果,我不得不我自己的:
创建并填充示例表(请在您将来的问题中为我们保存此步骤)
CREATE TABLE MyTable
(
Id int identity(1,1),
Name1 char(3),
Name2 char(3)
)
INSERT INTO MyTable (Name1, Name2) VALUES
('abc','def'),('zyx','abc'),
('ghi','jkl'),('yza','ghi'),
('mno','pqr'),('nml','mno'),('pqr','qpo'),
('stu','vwx'),('wvu','tsr'),('kji','hgf')
查询:
SELECT T1.Id, T1.Name1, T1.Name2, T2.Id, T2.Name1, T2.Name2
FROM MyTable T1
JOIN MyTable T2 ON T1.Name1 = T2.Name2
结果:
Id Name1 Name2 Id Name1 Name2
1 abc def 2 zyx abc
3 ghi jkl 4 yza ghi
5 mno pqr 6 nml mno
7 pqr qpo 5 mno pqr
答案 1 :(得分:0)
您可能不想使用游标。
您的列是否在同一张表中?如果是这样,那么就这么简单;
-- Show All rows with [DIFFERENT] Name and Name2 fields
SELECT
Name,
Name2
FROM [MyDB].[dbo].[MyTable]
WHERE
Name <> Name2
-- Show All rows with [SAME] Name and Name2 fields
SELECT
Name,
Name2
FROM [MyDB].[dbo].[MyTable]
WHERE
Name = Name2
否则,您将需要发布表定义和列名以获得更具体的示例