我正在尝试将数据插入到具有特定值的表的多个列中。但是,一个varchar列的数据值将来自放在引号内的另一个表select语句。
我需要将它放在里面而不将sub select语句解释为字符串的一部分。以下是我的询问;
INSERT INTO Table1
(column1,
column2,
column3,
column4)
VALUES (484640,
4,
1,
'<HTML><Head></Head><Body><a href="cgroup-histstatus.aspx?Staging_PKID=(select distinct column_1 from Table_2)">Upload results</a></Body></HTML>')
答案 0 :(得分:6)
目前,您的select
查询将被视为字符串,因为它包含在单引号中。查询将插入到列中,而不是结果。
这是正确的方法:
INSERT INTO Table1
(column1,
column2,
column3,
column4)
SELECT DISTINCT 484640,
4,
1,
'<HTML><Head></Head><Body><a href="cgroup-histstatus.aspx?Staging_PKID='
+ cast(column_1 as varchar(50))
+ '">Upload results</a></Body></HTML>'
FROM Table_2
如果您希望column_1
中的值包含在单引号中,请将'+ column_1 +'
替换为'''+ column_1 +'''
。
即使select
查询返回多条记录,这也有效。