如何获得包含所有结果的变量并迭代它?

时间:2014-03-24 15:47:28

标签: sql sql-server while-loop

我有一张包含一些记录的表,大约有40个,名为Table1。

我想在另一个表格中为每个记录创建一个新的注册表,但我不知道该怎么做。我想为每个记录迭代一个while循环,并在另一个表中插入记录,但我不知道如何(语法)。

我想要这样的事情:

foreach record in myTable1
     Insert into Table2(IDTable1) VALUES(record.IDTable1)
end foreach

我不知道SQL Server中的脚本。

感谢。

2 个答案:

答案 0 :(得分:3)

如果您只有插入,则可以执行此操作:

INSERT INTO Table2 (IDTable1)
SELECT IDTable1 FROM myTable1

它会从IDTable1中选择所有myTable1并将其插入Table2

答案 1 :(得分:2)

SQL Server在很大程度上是基于集合的。这意味着查询和行按组,组和按子句过滤。只有在极少数情况下,您希望或需要迭代结果集中的每一行并对其执行某些操作。

我说在您的情况下,您想要将一个表的内容复制到另一个表中。您可以通过多种方式实现这一目标,但最简单的方法之一就是:

SELECT
  IDTable1
INTO
  Table2
FROM
  Table1

这假定Table2不存在,并将创建它。如果Table2已存在,您的语法将更改为与其他答案所示的相同:

INSERT INTO Tabel2( IDTable1 )
SELECT
  IDTable1
FROM
  Table1