如何使用串联 ID 在 SQL 服务器的循环中插入 table N 次?

How can INSERT INTO a table N times within a loop in SQL Server using a concatenated ID?

我想在 SQL SERVER 中插入一个串联的 id 并重复它 N 次。

其实我有这样的东西:

DECLARE @COUNT INT;
DECLARE @NUM_INSERTS INT;
SET @COUNT = 1;
SET @NUM_INSERTS = 10;

WHILE (@COUNT <= @NUM_INSERTS)
BEGIN
   DECLARE @randomID VARCHAR(2);  
   SET @randomID = CAST(ABS(CHECKSUM(NEWID()) % 10) AS VARCHAR(1)) + CAST(ABS(CHECKSUM(NEWID()) % 10) AS VARCHAR(1)); 

   SET @ID = CONCAT(@randomID,@COUNT); 

   INSERT INTO Table(ID, colB, colC, colD)
   SELECT 
      @ID,
      colB, 
      colC, 
      colD
   FROM #tempTable

   SET @COUNT = @COUNT + 1; 
END

此外,我想生成一个串联的 id

¿是否可以使用递归 CTE 执行此操作?

这是使用递归 cte 和交叉应用的方法:

DECLARE @NUM_INSERTS INT;
SET @NUM_INSERTS = 10;

with cte as (
select 1 num
union all
select num+ 1 as num
from cte 
where num < @NUM_INSERTS
)

INSERT INTO Table(ID, colB, colC, colD)
SELECT CAST(ABS(CHECKSUM(NEWID()) % 10) AS VARCHAR(1)) 
       + CAST(ABS(CHECKSUM(NEWID()) % 10) AS VARCHAR(1)) 
       + cte.num as ID
       ,colB,colC,colD
FROM #tempTable
cross apply cte;