如果您想阅读,请提供信息: (我正在研究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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。
答案 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