在一个查询中在sql中插入100 Record

时间:2015-04-28 11:54:00

标签: sql sql-server sql-server-2012

我正在使用SQL Server 2012。

我的问题是在一个查询中插入100或50或类似的东西。我使用这个查询:

insert into mystudent(First_Name, Last_Name) 
values('M.Sibtain', 'Zaffar'), ('M.Sibtain', 'Zaffar') 

我知道在一个查询中插入100个不同的记录而不改变列值是没有意义的,但我的问题是如何插入相同的记录5或10次,就像用一个单词重复查询一样:< / p>

insert into mystudent(First_Name, Last_Name) 
values('M.Sibtain','Zaffar') repeat 5

是否有可能或者有没有这样的方法可以一次又一次地执行查询?

任何帮助将不胜感激。

更新:由于很多用户都在编辑我的问题,所以我请求每位访问者请尝试解决它而不是编辑它。感谢

4 个答案:

答案 0 :(得分:3)

如果您使用的是SQL Server Management Studio ,则可以使用insert into mystudent(First_Name, Last_Name) values('M.Sibtain','Zaffar') go 5 来实现此目的:

INSERT

这将执行此特定c = getchar() 五次。

答案 1 :(得分:3)

你可以这样做:

insert into mystudent(First_Name, Last_Name) 
select top 100 'M.Sibtain','Zaffar' 
from sysobjects

要获得更多记录,或者可以肯定,您可以交叉加入:
from sysobjects a, sysobjects b, sysobjects c

答案 2 :(得分:1)

使用递归cte:

DECLARE @t TABLE
    (
      First_Name NVARCHAR(MAX) ,
      Last_Name NVARCHAR(MAX)
    );
WITH    cte
          AS ( SELECT   1 AS C
               UNION ALL
               SELECT   C + 1
               FROM     cte
               WHERE    cte.C < 100
             )
    INSERT  INTO @t
            SELECT  'M.Sibtain' ,
                    'Zaffar'
            FROM    cte
    OPTION(MAXRECURSION 0)        

答案 3 :(得分:0)

DECLARE @tbl TABLE
(
   Id INT IDENTITY(1,1),        
   FirstName NVARCHAR(50),
   LastName NVARCHAR(50)
)
INSERT INTO @tbl
SELECT  'M.Sibtain','Zaffar'

DECLARE 
@number INT

SELECT 
@number = 100 
SELECT  FirstName,LastName
FROM    @tbl t
CROSS APPLY
( SELECT  *
  FROM    master..spt_values m
  WHERE m.number <= @number AND m.number > 0 and m.Type = 'P'
) x