Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL“while”将表数据读取到变量_Sql_Loops_While Loop - Fatal编程技术网

SQL“while”将表数据读取到变量

SQL“while”将表数据读取到变量,sql,loops,while-loop,Sql,Loops,While Loop,如何编写while循环,将表中的数据填充到单独查询中使用的变量? 例:从表1中选择项目 如果我可以在@var1列项下获得所有结果,然后在单独的查询中使用它,如: select * from Table2 where @var1 = Item_table2 <-- a random column in table2 此查询应将@var1从A0001到E0032匹配到表2中的Item_table2列。您不需要循环 select * from Table2 where Item_tabl

如何编写while循环,将表中的数据填充到单独查询中使用的变量? 例:从表1中选择项目

如果我可以在@var1列项下获得所有结果,然后在单独的查询中使用它,如:

select * 
from Table2 
where @var1 = Item_table2  <-- a random column in table2
此查询应将@var1从A0001到E0032匹配到表2中的Item_table2列。

您不需要循环

select * from Table2 where Item_table2 in (select ITEM from Table1)

如果确实需要循环/循环,请使用以下选项:

DECLARE @var1 varchar(100)

DECLARE ITEM_CURSOR CURSOR FOR
SELECT ITEM FROM Table1

OPEN ITEM_CURSOR
FETCH NEXT FROM ITEM_CURSOR INTO @var1

WHILE @@FETCH_STATUS = 0
BEGIN

/*Your separate query*/
SELECT * FROM Table2 where @var1 = Item_table2

FETCH NEXT FROM CURSOR_SMS INTO @var1

END
CLOSE ITEM_CURSOR;
DEALLOCATE ITEM_CURSOR;

这是你的第一张桌子:

mysql> select * from item_table1;
+-------+
| item  |
+-------+
| A0001 |
| B0001 |
| C0003 |
| D0005 |
| E0032 |
+-------+
5 rows in set (0.01 sec)
现在,我们需要基于此表创建一个视图。视图是@var1在问题中调用的等效概念:

让我们用自己的话检查一下我们的视图项_table2@var1:

mysql> select * from item_table2;
+-------+
| item  |
+-------+
| A0001 |
| B0001 |
| C0003 |
| D0005 |
| E0032 |
+-------+
5 rows in set (0.00 sec)
现在,您可以从item_table2中选择item_table1中存在的任何项目,如下所示:

 select it2.item from item_table2 it2 where it2.item='A0001'

您使用的是哪种数据库管理系统?
mysql> select * from item_table2;
+-------+
| item  |
+-------+
| A0001 |
| B0001 |
| C0003 |
| D0005 |
| E0032 |
+-------+
5 rows in set (0.00 sec)
 select it2.item from item_table2 it2 where it2.item='A0001'