【问题标题】:SQL Command to execute multiple times?SQL 命令执行多次?
【发布时间】:2009-11-03 03:13:54
【问题描述】:

我有需要编写多行相同值的情况来设置一些表。假设我必须添加 120 行并填充两列。我正在寻找一个快捷方式,而不是让 Insert 行重复 n 次。这该怎么做?

【问题讨论】:

  • 您能简单地将您的插入语句放入某个while循环中吗?
  • 我可以,但我会在 VB 中执行此操作,并认为最好避免向服务器发送/发送回。是否可以在 SQL 2005 中的 sp 中执行循环?

标签: sql sql-server sql-server-2005


【解决方案1】:

在 SQL Server Management Studio 中,您可以将“GO”关键字与参数一起使用:

INSERT INTO YourTable(col1, col2, ...., colN)
VALUES(1, 'test', ....., 25)
GO 120

但这仅适用于 Mgmt Studio(它不是正确的 T-SQL 命令 - 它是 Mgmt Studio 命令字)。

马克

【讨论】:

    【解决方案2】:

    怎么样

    Insert Table( colsnames )
    Select Top 120 @value1, @Value2, etc.
    From AnyTableWithMoreThan120Rows
    

    只需确保@Value 列表中的值类型与 colNames 列表匹配

    【讨论】:

    • 大多数系统表都有足够的行数。
    • 但我在表格中没有这些值。为他们创建一张桌子会破坏目的
    • 插入不是从表中获取数据,它只是使用表来获取定义的行数。 select 子句应该只包含对传入参数值的引用。就像你执行 [Select 'MyName' from tablewith1000Rows] 一样,你会得到 1000 行,其中包含 'MyName',并且表中没有数据
    【解决方案3】:

    怎么样

    insert into  tbl1
     (col1,col2)
    (select top 120 @value1,@value2 from tbl2)
    

    如果在 sql server 2008 中。 sql server 2008 中的新增功能,可在单个查询中将多行插入表中。

    insert into  tbl1
     (col1,col2)
    values
    (@value1,@value2),(@value1,@value2),.....(@value1,@value2)
    

    【讨论】:

      【解决方案4】:

      将值放在未使用的表中以安全保存。从那里您可以从该表插入到您需要设置的表中。

      【讨论】:

        【解决方案5】:
        1. 使用您的数据创建 Excel 电子表格。
        2. 将电子表格导入 Sql Server。

        【讨论】:

          【解决方案6】:

          你甚至可以尝试这样的事情(只是一个例子)

          declare @tbl table(col1 varchar(20),col2 varchar(20))
          ; with generateRows_cte as
          (
              select 
                  1 as MyRows
          
                 union all
                  select 
                      MyRows+1
          
                  from    generateRows_cte   
                  where   MyRows < 120
          )
          insert into @tbl(col1,col2)
          select 
          'col1' + CAST(MyRows as varchar),'col2' + CAST(MyRows as varchar)
          from generateRows_cte OPTION (MAXRECURSION 0)
          select * from @tbl
          

          注意:- 为什么不尝试从数据集批量插入到 SqlServer 中?我首先没有注意到你也有前端(VB)!

          【讨论】:

          • 像 Charles 的解决方案,但可能更好,因为它可以即时创建表格。我喜欢它。谢谢。
          • 即使您可以借助一些系统表,如 SYS.COLUMNS、master..spt_values 等来完成您的任务
          猜你喜欢
          • 2011-01-21
          • 1970-01-01
          • 1970-01-01
          • 2018-07-13
          • 1970-01-01
          • 2020-12-15
          • 2017-05-01
          • 2020-07-08
          • 2012-08-31
          相关资源
          最近更新 更多