5

我看过很多例子和笔记,人们说你可以做到以下几点:

INSERT INTO DatesTable  
   SELECT DateAdd(day, 1, MAX(DatesTable.Dates)) from DatesTable
GO 10

GO n 次我听说是在 SQL 中循环的一种有效方式 - 但它不起作用,并且 SQL Server Management Studio 不允许它。

我做错了什么还是有我不知道的设置?如果不能做到,那么简单的替代方案是什么。

4

2 回答 2

3

为确认其有效人员而欢呼。我找到了它不想工作的原因 - GO 只是想要在它之后添加另一个语句,所以我做了一个选择来查看它的工作,它允许它全部运行 - 简单而有用。

INSERT INTO DatesTable  SELECT DateAdd(day, 1, MAX(DatesTable.Dates)) from DatesTable
GO 10
SELECT * FROM DatesTable
于 2013-05-22T08:03:28.777 回答
0

一般来说,使用单个 sql 查询比使用循环更具性能和可维护性/适应性。

一种机制是使用保存一系列数字的查找表。一个这样的未记录但有用的表是master..spt_values.

INSERT INTO
  DatesTable
SELECT
  DATEADD(DAY, SEQUENCE.number, BASE.date)
FROM
  master..spt_values                            AS SEQUENCE
CROSS JOIN
  (SELECT MAX(Dates) AS date FROM DatesTable)   AS BASE
WHERE
      SEQUENCE.type = 'P'
  AND SEQUENCE.number BETWEEN 1 AND 10
于 2013-05-22T07:56:46.043 回答