繁体   English   中英

SQL:将查询结果插入 While 循环内的临时表

[英]SQL: Insert Query Result into Temp Table inside While Loop

我正在尝试将 select 查询结果插入到 while 循环内的临时表中。 但是下面的查询给了我这个错误:

数据库中已经有一个名为“#TT”的 object。

DECLARE @V_START INT = 1;
DROP TABLE #TT

WHILE(@V_START < 4)
BEGIN
    SELECT * INTO #TT
    FROM Table
    WHERE Column = @V_START;

    SET @V_START = @V_START + 10;
END

SELECT * FROM #TT

每次执行循环时都会创建一个临时表,但是第一次执行临时表不存在命令运行成功,并且在第二轮循环执行中给出错误。 您可以像下面这样尝试:

DECLARE @V_START INT = 1;
DROP TABLE IF EXISTS #TT;
CREATE TABLE #TT 
(
    --your columns
)

WHILE(@V_START < 40)
BEGIN
    INSERT INTO #TT
    (
        --your columns
    )
    SELECT --your columns
    FROM Table
    WHERE Column = @V_START;

    SET @V_START = @V_START + 10;
END

SELECT * FROM #TT

但更好的解决方案是将 select 用于将数据插入临时表的条件:

DROP TABLE IF EXISTS #TT

 SELECT * INTO #TT
    FROM Table
    WHERE Column % 10 = 0 AND Id < 10

    SELECT * FROM #TT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM