【问题标题】:SQL Server question stored procedure loopsSQL Server 问题存储过程循环
【发布时间】:2010-11-08 16:04:22
【问题描述】:

我必须运行多个相互依赖的查询

select a from a ( result has multiple rows)
select b from b  ( result has multiple rows)

对于该查询中的每一行我需要运行它

select c from c where c.a=a amd c.b=b

 insert  c into d 

有点像:

select a from a ( result has multiple rows)
select b from b  ( result has multiple rows 
  for a in a
      for b in b
          select c from c where c.a=a amd c.b=b
          insert  c,a,b into d 

这可以作为存储过程吗?

谢谢

【问题讨论】:

  • 表a在结果中有多行,所以b
  • 最终的结果应该如下表d:c,a,b

标签: sql sql-server-2005 stored-procedures


【解决方案1】:

存储过程?当然。射击,甚至可以在一个语句中:

INSERT INTO d (c)
  SELECT c FROM c WHERE c.a IN (SELECT a FROM a) AND c.b IN (SELECT b FROM b)

您甚至可以通过连接做得更好,但要写到我需要更多地了解表格之间的关系。

【讨论】:

    【解决方案2】:

    我很确定您可以在不使用任何 SQL 循环的情况下编写此查询。

    【讨论】:

      【解决方案3】:
      INSERT
      INTO    d
      SELECT  c.*
      FROM    a
      CROSS JOIN
              b
      JOIN    с
      ON      c.a = a.id
              AND c.b = b.id
      

      【讨论】:

        猜你喜欢
        • 2011-11-07
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 2013-08-14
        • 1970-01-01
        • 2021-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多