SQL从SELECT结果插入表变量

时间:2014-03-27 07:28:59

标签: sql-server tsql variables insert

如果您想阅读,请提供信息: (我正在研究SQL数据库更新程序。我有一个(旧)ICD代码表,我想在旧的ICD代码表中插入新记录(~90k记录)。如果没有现有的ICD代码,则插入,如果是更新。问题是要插入的数据来自表调用IcdImportData(从.csv文件导入),我需要创建一个变量表,其中包含旧表的比较值和新的ImportData表。)

我在问什么: 我想从返回许多记录的Select语句中将值插入变量表。我怎么能这样做?

这是代码:

SELECT IcdCodeID FROM
(
    SELECT IcdCodeID FROM IcdImportData
    UNION ALL
    SELECT IcdCodeValue FROM IcdCode
) tmp
GROUP BY IcdCodeID
HAVING COUNT(*)>=2

我希望将结果插入此变量表:

DECLARE @temp table (IcdCodeValue NCHAR(10))
INSERT INTO @temp
SELECT
(
*The code above*
)

错误:

  

Msg 512,Level 16,State 1,Line 2   子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。   声明已经终止。

1 个答案:

答案 0 :(得分:0)

这样做,你必须删除一个额外的select

DECLARE @temp table (IcdCodeValue NCHAR(10))

INSERT INTO @temp
SELECT IcdCodeID FROM
(
        SELECT IcdCodeID FROM IcdImportData
        UNION ALL
        SELECT IcdCodeValue FROM IcdCode
) tmp
GROUP BY IcdCodeID
HAVING COUNT(*)>=2

或者这样做

DECLARE @temp table (IcdCodeValue NCHAR(10))
INSERT INTO @temp
SELECT * FROM
(
SELECT IcdCodeID FROM
(
        SELECT IcdCodeID FROM IcdImportData
        UNION ALL
        SELECT IcdCodeValue FROM IcdCode
) tmp
GROUP BY IcdCodeID
HAVING COUNT(*)>=2) t