我想插入两个值,一个用固定数字填充,另一个是另一个表中的id。
现在我收到了错误
#1242 - 子查询返回超过1行。
INSERT INTO table1 (value1, value2) VALUES
(6 , (SELECT id FROM table2 WHERE name = 'Peter'))
也许你可以帮助我。
答案 0 :(得分:1)
如果你想在table1中为table1中的每个记录插入记录,其中name是Peter,这个方法应该可行。
此插入查询将把table2中名称为“Peter”的所有记录插入table1。如果您只想插入一条记录,可以使用LIMIT
,正如Macmee在答案中所解释的那样
insert into dbo.table1
(
value1,
value2
)(
select
6,
table2.id
from
table2
where
name = 'Peter'
)
答案 1 :(得分:0)
尝试使用LIMIT 1
:
INSERT INTO table1 (value1, value2) VALUES (6 , (SELECT id FROM table2 WHERE name = 'Peter' LIMIT 1))
这种方式在您的嵌套查询(SELECT id FROM table2 WHERE name = 'Peter' LIMIT 1)
中,它只会返回第一个匹配项,并且您的插入内容应该通过。
请记住,如果你的目的是为table2中的每一行插入新行,那么他们的名字是" Peter"那么这只会插入第一个。