2013-09-24 91 views
1

我正在使用Access中的SQL。我不是一个程序员,但我熟悉使用VBA以及SQL基础知识。For循环的SQL替代

我想要完成的是在Visual Basic中使用for循环的SQL中的等效项。我知道这在SQL中不是“技术上”可能的,并且可能不是最好的方法,所以我在寻找建议。我知道它可以通过使用联合并为每个值重复查询来完成,例如i = 1,2,3等。这是效率低下,容易变得太复杂而无法评估。

基本上我需要的是一种方法来查询i = 1,然后重复输出i = 2等数据。使用group by i不是一个选项,因为还有几个子查询。

在此先感谢!

+2

不要在SQL中使用循环。开始思考(行的集合) –

回答

1

没有很多上下文,我们无法提供更好的答案,但您可以在sql中完成FOR循环。

declare @ctr integer 

set @ctr = 1 

while @ctr < 1000 
begin 

--Do your logic 

select @ctr = @ctr + 1 

end 

但是,这不是一个非常有效的SQL使用。你应该能够写出你所需要的而不需要迭代它。在SETS中思考,你会和RDBMS更好地相处。

+0

我无法真正提供代码,但这里有更多细节。我有一个涉及select语句中的多个子查询和聚合的大型查询。这些数据来自6个表格。我正在查询每条生产线的数据;因此,我希望查询返回第1行,第2行等的结果。您的第一个解决方案很可能是我需要的,而且我没有真正的数据库管理员来回答。 – jpw2007

+0

你说你不能GROUP BY LINE,但我很确定你可以。这是你应该追求的课程。无论如何,我已经给你一个解决你的问题。这对你的潜在问题不是一个好的解决方案。 –

+0

非常感谢!我会逐行研究这个小组。对于所有子查询,我还没有弄清楚它的正确用法。 – jpw2007

2

确定您需要完成的任务并不十分清楚,我建议发布您的表格结构以及您需要检索的内容。

但是,您希望“使用IN语句似乎是可行的”。

select 
    * 
from 
    whatever 
where id IN (1,2,3)