Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个查询中在sql中插入100条记录_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

在一个查询中在sql中插入100条记录

在一个查询中在sql中插入100条记录,sql,sql-server,sql-server-2012,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次,就像用一个单词重复查询一样: insert into mystude

我正在使用SQL Server 2012

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

insert into mystudent(First_Name, Last_Name) 
values('M.Sibtain', 'Zaffar'), ('M.Sibtain', 'Zaffar') 
我知道在一个查询中插入100条不同的记录而不更改列值是毫无意义的,但我这里的问题是,如何插入相同的记录5或10次,就像用一个单词重复查询一样:

insert into mystudent(First_Name, Last_Name) 
values('M.Sibtain','Zaffar') repeat 5
有没有可能或者有没有这样的方法可以在不反复执行查询的情况下做到这一点

任何帮助都将不胜感激


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

如果您使用的是SQL Server Management Studio,您可以使用GO n来实现这一点:

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

这将执行此特定插入五次。

如果您使用的是SQL Server Management Studio,则可以使用GO n来实现此目的:

insert into mystudent(First_Name, Last_Name) 
values('M.Sibtain','Zaffar') 
go 5
这将执行此特定插入五次。

您可以执行以下操作:

insert into mystudent(First_Name, Last_Name) 
select top 100 'M.Sibtain','Zaffar' 
from sysobjects
要获得更多记录,或者可以肯定,您可以交叉连接: 从sysobjects a、sysobjects b、sysobjects c可以执行以下操作:

insert into mystudent(First_Name, Last_Name) 
select top 100 'M.Sibtain','Zaffar' 
from sysobjects
要获得更多记录,或者可以肯定,您可以交叉连接: 从sysobjects a、sysobjects b、sysobjects c到递归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)        
使用递归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)        

您使用哪种数据库管理系统?只需注意:在Sql Server中,它被称为行而不是记录。不仅在Sql Server中,在一般Sql中!您需要的数据是否可以从其他表中访问,如果可以的话,您可以插入x select Y,您使用的是哪种DBMS?请注意:在Sql Server中,它被称为行而不是记录。不仅在Sql Server中,在一般Sql中!您需要的数据是否可以从其他表访问,如果可以的话,可以插入x select yWorks,但它是一个游标。在我的机器上记录了100000条记录,花了87秒。也不适用于表变量:go之后不可用。@GiorgiNakeuri:好的-这是为了快速-它不是性能优化的,它不漂亮-这只是一种在需要时插入5、10、50行的快速脏方法。。。。。不要在生产中使用-@webydesigny:为什么不呢?它可以工作,但它是一个光标。在我的机器上记录了100000条记录,花了87秒。也不适用于表变量:go之后不可用。@GiorgiNakeuri:好的-这是为了快速-它不是性能优化的,它不漂亮-这只是一种在需要时插入5、10、50行的快速脏方法。。。。。不要在生产中使用-@webydesigny:为什么不呢?在我的机器上,100万行的数据需要8秒才能捕获统计数据,6秒不能捕获统计数据。SqlFiddle在我的机器上挂起了100万行,捕获统计数据需要8秒,不捕获统计数据需要6秒。SqlFiddle本身挂起了很多东西