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'
)