遍历选择结果

Posted

技术标签:

【中文标题】遍历选择结果【英文标题】:iterate through select results 【发布时间】:2013-02-17 11:48:49 【问题描述】:

我想在 SQLServer 中从一个 select 语句中创建一个列表,然后使用这个 select 语句的结果来创建一组选择,例如,如果我有 3 个从我的第一个选择返回的值,我'我想运行一个 While 循环,该循环将运行 3 次并在每次交互时选择值。

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

我有一个选择语句:

Select ID
From T_1
Where T_1.somefield=1

返回的语句应该是:

|1|
|2|
|4|

由于我的 Where 条件,未显示 3。

我想通过这样做来迭代我的结果

set @myCount=select count(id) from -my result-
set @indexFlag=0;

while (@indexFlag<@myCount)
Begin


Select *
From T_2
Where T_2.field=...(1 - 1st loop, 2- 2nd loop, 4- 3rd loop)


@indexFlag=@indexFlag+1

结束

我不确定如何实现它,SQLSERVER 是否支持某种列表? 任何帮助将不胜感激。

【问题讨论】:

为什么不能只使用纯 SQL 来完成这项工作?在我看来,您可以只选择 * from T_2 where T_2.field in (select * from T_1 ...) group by T1.ID 应用程序管理器要求.. 我想学习更多关于 SQLSERVER 的知识:) 你可能需要游标,但如果你想了解更多关于 SQLServer 的信息,你不应该使用游标......***.com/questions/1479680/… 了解数据库的工作原理。 RDBMS 是一个基于集合的操作。你不循环。了解如何使用JOIN 【参考方案1】:

我认为您应该为此使用连接。

select t_2.* from t_1 left join t_2 
on t_1.ID = t_2.ID
where t_1.some_field = 1

这将返回一个表本身所需的所有行。然后在您的代码中处理此表以过滤所需的行。

【讨论】:

我知道我可以使用它,但我的需要需要单独处理每条记录

以上是关于遍历选择结果的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历数组会返回不同的 SQL 结果,具体取决于代码

PHP sqlsrv_fetch_array 只循环一半的结果

C++遍历mysql结果集,一万条数据花多长时间?

通过批量读取避免 N+One 选择和来自 eclipselink 的无效结果

遍历游标结果

在 Swift 中循环遍历 Alamofire JSON 结果