我希望INSERT INTO
一次有多个值,我通过执行以下操作来完成此操作:
INSERT INTO table_1(col_1,col_2,col_3)
SELECT col_1, col2, (SELECT col3 FROM table_3)
FROM table_2
但来自col3
的{{1}}是日期时间格式,而来自table_3
的{{1}}需要col3
值。我通过以下方式做到了这一点:
table_1
当我运行此操作时,出现integer
错误。我真的不知道如何解决这个问题。希望你这样做。
提前谢谢。
答案 0 :(得分:0)
INSERT INTO table_1(col_1,col_2,col_3)
SELECT col_1, col2, (CAST(CONVERT(varchar(10),(SELECT top 1 col3 FROM table_3),112)AS int))
FROM table_2
您需要使用前1 来选择1行
答案 1 :(得分:0)
嗯,我认为错误说明了一切。您必须以WHERE条件以某种方式限制内部查询,例如使用TOP或MAX(col3)。取决于你想要的WHICH col3。
答案 2 :(得分:0)
您需要将table_2连接到table_3。不确定你的数据库结构是什么,但它应该是这样的:
INSERT INTO table_1(col_1,col_2,col_3)
SELECT t2.col_1, t2.col2, t3.col3
FROM table_2 t2
INNER JOIN table_3 t3 on t3.t2id = t2.id
替代方法是使用TOP 1,只返回子查询中的1条记录 - 但我不建议这样做,因为它可能不是你想要的值:
INSERT INTO table_1(col_1,col_2,col_3)
SELECT col_1, col2, (SELECT top 1 col3 FROM table_3)
FROM table_2
答案 3 :(得分:0)
您可以使用CTE准备数据:
;WITH MyData (col1, col2, col3)
AS
(
SELECT col_1, col2, CAST(CONVERT(varchar(10),(col3),112)AS int)
FROM table_2 JOIN table_3 ON <join condition>
)
INSERT INTO table_1(col_1,col_2,col_3)
SELECT col_1, col2, col3
FROM MyData
答案 4 :(得分:0)
请尝试以下查询:
INSERT INTO table_1(col_1,col_2,col_3)
SELECT col_1, col2, isnull((SELECT TOP 1 cast(col3 as int) FROM table_3),0)
FROM table_2