Sql INSERT INTO组合值并选择失败

时间:2017-05-19 15:12:27

标签: php mysql sql insert mysql-error-1242

我想插入两个值,一个用固定数字填充,另一个是另一个表中的id。

现在我收到了错误

  

#1242 - 子查询返回超过1行。

INSERT INTO table1 (value1, value2) VALUES 
(6 , (SELECT id FROM table2 WHERE name = 'Peter'))

也许你可以帮助我。

2 个答案:

答案 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"那么这只会插入第一个。