Sql INSERT INTO 组合值和 select 失败
Sql INSERT INTO combining value and select failure
我想插入两个值,一个用固定数字填充,另一个是另一个table的id。
现在我得到了错误
#1242 - Subquery returns more than 1 row.
INSERT INTO table1 (value1, value2) VALUES
(6 , (SELECT 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)
它只会 return 第一个匹配项,您的插入应该通过。
请记住,如果您的目的是为表 2 中名称为 "Peter" 的每一行插入新行,那么这只会插入第一行。
如果您想为表 2 中名称为 Peter 的每条记录将记录插入到表 1 中,则此方法应该有效。
此插入查询会将 table2 中名称为 "Peter" 的所有记录插入到 table1 中。如果你只想插入一条记录,你可以使用 LIMIT
正如 Macmee 在他的回答中解释的那样
insert into dbo.table1
(
value1,
value2
)(
select
6,
table2.id
from
table2
where
name = 'Peter'
)
我想插入两个值,一个用固定数字填充,另一个是另一个table的id。
现在我得到了错误
#1242 - Subquery returns more than 1 row.
INSERT INTO table1 (value1, value2) VALUES
(6 , (SELECT 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)
它只会 return 第一个匹配项,您的插入应该通过。
请记住,如果您的目的是为表 2 中名称为 "Peter" 的每一行插入新行,那么这只会插入第一行。
如果您想为表 2 中名称为 Peter 的每条记录将记录插入到表 1 中,则此方法应该有效。
此插入查询会将 table2 中名称为 "Peter" 的所有记录插入到 table1 中。如果你只想插入一条记录,你可以使用 LIMIT
正如 Macmee 在他的回答中解释的那样
insert into dbo.table1
(
value1,
value2
)(
select
6,
table2.id
from
table2
where
name = 'Peter'
)