SProc中的SQL Server循环生成查询

时间:2011-10-05 19:24:47

标签: sql tsql sql-server-2008

我需要构建一个查询,该查询获取整数列表,并使用SQL Server 2008 R2将几个SELECT与INTERSECT连接在一起。这里基本上是我需要构建的查询,但SELECTS的数量会有所不同:

SELECT col1
FROM table1
WHERE col2 = 1

INTERSECT

SELECT col1
FROM table1
WHERE col2 = 2

INTERSECT

SELECT col1
FROM table1
WHERE col2 = 3

我有一个表值函数,它将采用逗号分隔的ID列表并从中创建一个表。但我基本上需要遍历该表值函数来构建SQL语句然后执行它。

如何创建该循环?或者是否有更好的方法可以做到这一点(如果它会更好,我可以在代码中做到这一点)?

编辑: 为了澄清使用INTERSECT的目的,这就是我正在做的事情。我正在使用的结构是基于属性的选择(大小,颜色等)将父产品与子产品相关联。对于每个属性组合,都有一个匹配的子产品。因此,每个选择都选择映射到单个属性值的所有子产品。然后,我必须找到每个的交集,以找到与该属性组合匹配的一个子产品。如果有更好的方法来进行查询,我会对此持开放态度。我知道内部连接将是相同的结果,但仍然需要相同的迭代。

1 个答案:

答案 0 :(得分:2)

假设临时表名为#temp:

SELECT col1
  FROM table1 t
       INNER JOIN
       #temp v
       ON (t.col2 = v.col2)
GROUP BY
       col1
HAVING COUNT(*) = (SELECT COUNT(*) FROM #temp)