我有一个名为Structure1
的表,我想将Structure_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
答案 0 :(得分:2)
似乎您来自另一种编程语言背景。在大多数(如果不是全部)关系数据库中,您的操作是固定设置的,而不是一个接一个地进行。它们经过优化也可以那样工作。
您可以简单地连接两个表并显示所有匹配的值。
SELECT
S2.Structure_name
FROM
Structure2 AS S2
INNER JOIN Structure1 AS S1 ON S2.Structure_name = S1.Structure_name
编辑:如果您确实要使用循环,则可以使用CURSOR
。基本语法如下:
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
答案 1 :(得分:0)
这就是RDBMS中JOIN的作用
这将给出2个表之间的所有匹配行
if(!mUsername.getText().toString().equals("admin") && !mPassword.getText().toString().equals("admin")){