我想插入两个值,一个由固定数字填充,另一个是另一个表中的 id。
现在我得到了错误
#1242 - 子查询返回超过 1 行。
INSERT INTO table1 (value1, value2) VALUES
(6 , (SELECT id FROM table2 WHERE name = 'Peter'))
也许你可以帮助我。
我想插入两个值,一个由固定数字填充,另一个是另一个表中的 id。
现在我得到了错误
#1242 - 子查询返回超过 1 行。
INSERT INTO table1 (value1, value2) VALUES
(6 , (SELECT id FROM table2 WHERE name = 'Peter'))
也许你可以帮助我。
如果您想为 table2 中名称为 Peter 的每条记录插入记录到 table1 中,这种方法应该有效。
此插入查询会将 table2 中名称为“Peter”的所有记录插入到 table1 中。如果您只想插入一条记录,您可以LIMIT
按照 Macmee 在他的回答中解释的那样使用
insert into dbo.table1
(
value1,
value2
)(
select
6,
table2.id
from
table2
where
name = 'Peter'
)
尝试使用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”的每一行插入新行,那么这只会插入第一行。