如何在SQL中制定FOR EACH循环?

时间:2011-05-12 22:13:21

标签: tsql foreach

我正在开发一个当前适用于一个组/模式组合的SQL查询。但我希望此查询适用于所有组和模式。并且仅包含一次组合。但是在源数据中还有许多其他列,因此每个组合有多个记录。

所以我的源表结构是:

group   mode   p-val
-----   ----   ------
A       B      4.567
C       D      3.694

如何设置循环以循环每个组/模式组合?而且我宁愿不使用游标!

2 个答案:

答案 0 :(得分:2)

这在sql中称为JOIN。即声明

SELECT * FROM table AS a JOIN table AS b;

结果

a | b | 4.5   | a | b | 4.5
a | b | 4.5   | c | d | 3.694
c | d | 3.694 | a | b | 4.5
c | d | 3.694 | c | d | 3.694

现在您拥有[组,模式]记录的所有组合。详细了解Google的JOIN。

答案 1 :(得分:2)

一个非常广泛而普遍的问题。这是一个广泛而普遍的答案。

首先,编写一个查询来提取您感兴趣的值集,这样每个集都是唯一的。 SELECT DISTINCT...SELECT... GROUP BY...建议自己。

此数据可以存储为临时表,作为子查询包含,或者只是整个最终查询的一部分。最好的使用完全取决于你正在做的事情。

接下来,使用此子集作为基础编写“主要”处理查询。类似于...FROM <theSubset> INNER JOIN <etc>

正确完成(我并不是说这很容易),这种基于集合的方法的效果与程序循环所取得的结果非常相似。