Sql server 需要将select的输出存储到mssql中的变量数组中
我有一个名为Sql server 需要将select的输出存储到mssql中的变量数组中,sql-server,Sql Server,我有一个名为Structure1的表,我想将Structure\u name值存储到一个数组中,并与另一个表Structure2进行比较,其中列item并显示匹配的值 DECLARE @Structure1 TABLE ( Structure_name VARCHAR[128] ) select Structure_name FROM Structure1 SELECT COUNT(*) into xyz FROM Structure1
Structure1
的表,我想将Structure\u name
值存储到一个数组中,并与另一个表Structure2
进行比较,其中列item
并显示匹配的值
DECLARE @Structure1 TABLE
(
Structure_name VARCHAR[128]
)
select Structure_name FROM Structure1
SELECT COUNT(*) into xyz FROM Structure1
FOR i=1..xyz
SELECT Structure_name FROM Structure2 WHERE ITEM = Structure[i]
print Structure_name values..
END FOR
似乎您来自另一种编程语言背景。在大多数(如果不是全部的话)关系数据库中,您的操作是在一组基础上完成的,而不是一个接一个地完成的。它们也经过优化,可以以这种方式工作 您可以简单地联接两个表并显示所有匹配的值
SELECT
S2.Structure_name
FROM
Structure2 AS S2
INNER JOIN Structure1 AS S1 ON S2.Structure_name = S1.Structure_name
编辑:如果您真的想使用循环,可以使用
光标
。基本语法如下所示:
DECLARE StructureCursor CURSOR FOR
SELECT
S.Structure_name
FROM
Structure2 AS S
OPEN StructureCursor
DECLARE @StructureName VARCHAR(200)
FETCH NEXT FROM StructureCursor INTO @StructureName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @MatchingStructureName VARCHAR(200)
SELECT
@MatchingStructureName = S1.Structure_name
FROM
Structure1 AS S1
WHERE
S1.Structure_name = @StructureName
PRINT (@MatchingStructureName)
FETCH NEXT FROM StructureCursor INTO @StructureName
END
CLOSE StructureCursor
DEALLOCATE StructureCursor
似乎您来自另一种编程语言背景。在大多数(如果不是全部的话)关系数据库中,您的操作是在一组基础上完成的,而不是一个接一个地完成的。它们也经过优化,可以以这种方式工作 您可以简单地联接两个表并显示所有匹配的值
SELECT
S2.Structure_name
FROM
Structure2 AS S2
INNER JOIN Structure1 AS S1 ON S2.Structure_name = S1.Structure_name
编辑:如果您真的想使用循环,可以使用
光标
。基本语法如下所示:
DECLARE StructureCursor CURSOR FOR
SELECT
S.Structure_name
FROM
Structure2 AS S
OPEN StructureCursor
DECLARE @StructureName VARCHAR(200)
FETCH NEXT FROM StructureCursor INTO @StructureName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @MatchingStructureName VARCHAR(200)
SELECT
@MatchingStructureName = S1.Structure_name
FROM
Structure1 AS S1
WHERE
S1.Structure_name = @StructureName
PRINT (@MatchingStructureName)
FETCH NEXT FROM StructureCursor INTO @StructureName
END
CLOSE StructureCursor
DEALLOCATE StructureCursor
这就是联接在RDBMS中的作用 这将提供两个表之间的所有匹配行
SELECT
*
FROM
@Structure1 s1
JOIN
Structure2 s2 ON s1.Structure_name = s2.ITEM
这就是联接在RDBMS中的作用 这将提供两个表之间的所有匹配行
SELECT
*
FROM
@Structure1 s1
JOIN
Structure2 s2 ON s1.Structure_name = s2.ITEM
我想使用数组概念并执行..但在mssql中没有数组概念,所以我使用临时表并希望执行..必须执行许多验证..所以需要使用此数组概念。谢谢。@学习者:很少有情况需要在SQL或“使用数组”中循环。我们也回答了你的问题。如果你想在你真正的问题上得到帮助,那么就告诉我们真正的问题。我想使用数组概念并执行..但是在mssql中没有数组概念,所以我使用临时表并执行..必须执行许多验证..因此需要使用此数组概念。谢谢。@学习者:很少有情况需要在SQL或“使用数组”中循环。我们也回答了你的问题。如果你想在你真正的问题上得到帮助,那就给我们真正的问题。