我正在开发一个当前适用于一个组/模式组合的SQL查询。但我希望此查询适用于所有组和模式。并且仅包含一次组合。但是在源数据中还有许多其他列,因此每个组合有多个记录。
所以我的源表结构是:
group mode p-val
----- ---- ------
A B 4.567
C D 3.694
如何设置循环以循环每个组/模式组合?而且我宁愿不使用游标!
答案 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>
。
正确完成(我并不是说这很容易),这种基于集合的方法的效果与程序循环所取得的结果非常相似。