如何使用串联 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;
我想在 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;