Mysql sql中insert语句内的select语句返回多行

Mysql sql中insert语句内的select语句返回多行,mysql,sql,Mysql,Sql,我在mysql中有一个以下结构化查询。但它返回了一个错误。基本上,我希望从现有表中获取值,并插入到新表中。我尝试了以下方法,但出现了错误 INSERT INTO `table1`( `first`,`second`,`third`) VALUES( (SELECT table2.timemodified FROM `xtable` AS table2,`ytable` AS table3 WHERE table3.id = table2.contextid),

我在mysql中有一个以下结构化查询。但它返回了一个错误。基本上,我希望从现有表中获取值,并插入到新表中。我尝试了以下方法,但出现了错误

INSERT INTO `table1`(
    `first`,`second`,`third`) VALUES(

    (SELECT table2.timemodified FROM `xtable` AS table2,`ytable` AS table3 
        WHERE table3.id = table2.contextid),

    (SELECT table4.id FROM `ztable` AS table4,`ytable` AS table3 WHERE table4.id = table3.instanceid),

    (SELECT murs.id FROM `table5` AS murs,
    `xtable` AS table2, 
    `wtable` AS table6, 
    `ytable` AS table3, 
    `vtable` AS table7 
    WHERE murs.id = table2.userid AND table6.id = table2.roleid AND table3.id = table2.contextid AND table7.instance = table3.instanceid AND table6.id =3)
);

我进行了测试,但错误是:1242-子查询返回的行数超过1行。问题是我从select查询insert中得到的记录不止一条。如何删除此类错误。

总查询如下所示。如果您已经选择了,请将*替换为要选择的列名

INSERT INTO table1(first,second,third)

-- replace * with columns name first,second,third
select * from (
-- START YOU'RE select query
(SELECT table2.timemodified FROM `xtable` AS table2,`ytable` AS table3 
        WHERE table3.id = table2.contextid),

    (SELECT table4.id FROM `ztable` AS table4,`ytable` AS table3 WHERE table4.id = table3.instanceid),

    (SELECT murs.id FROM `table5` AS murs,
    `xtable` AS table2, 
    `wtable` AS table6, 
    `ytable` AS table3, 
    `vtable` AS table7 
    WHERE murs.id = table2.userid AND table6.id = table2.roleid AND table3.id = table2.contextid AND table7.instance = table3.instanceid AND table6.id =3)
-- END YOU'RE select query
)

我将you's select语句移动到子查询中,这样您就可以使用子查询的全部结果了。

是否要插入多行而不是一行。是的,我要插入多行使用:插入表value1、value2、value3从表2中选择x、y、z我没有收到您的命令,请详细说明您的答案:我想您的子查询select查询返回的行不止一行。我建议尝试在每个select查询中添加限制1,然后重试一次,如果一切正常,那么查询是正确的。您需要找到一种方法来限制返回的行。请解释: