将值从1表插入到另一个表中

时间:2014-04-14 08:39:24

标签: mysql sql

我有两张桌子

modules_templates

templates

在表格模板中,我有75条记录。我想在模板中插入modules_templates模块中modules_templates = template_id中的template_id的一些数据。 我创建了这个查询:

INSERT INTO `modules_templates` (`module_template_id`,`module_template_modified`,`module_id`,`template_id`) VALUES  ('','2014-04-14 10:07:03','300',(SELECT template_id FROM templates WHERE 1))

我遇到错误#1242 - Subquery returns more than 1 row,如何在1个查询中添加所有75行?

4 个答案:

答案 0 :(得分:2)

试试这个

INSERT 
    INTO `modules_templates` 
    (`module_template_id`,`module_template_modified`,`module_id`,`template_id`) 

    (SELECT '','2014-04-14 10:07:03','300',template_id FROM templates WHERE 1)

您的查询无效,因为您为一行插入了值,其中最后一个字段即子查询的结果是多行的,所以您需要做的是将这些单行值放在子查询中,这样它们就可以了为子查询中的每一行返回。

答案 1 :(得分:1)

试试这个:

INSERT INTO `modules_templates`
(`module_template_id`,`module_template_modified`,`module_id`,`template_id`) 
SELECT '','2014-04-14 10:07:03','300',template_id FROM templates WHERE 1

答案 2 :(得分:0)

INSERT INTO `modules_templates`
(`module_template_id`,`module_template_modified`,`module_id`,`template_id`) 
VALUES  
('','2014-04-14 10:07:03','300',
     (SELECT template_id FROM templates WHERE 1 limit 1))

答案 3 :(得分:0)

要添加多行,字段数/类型必须匹配:

INSERT INTO foo SELECT * FROM bar;

请参阅以下链接,了解如何正确执行此操作:

http://www.w3schools.com/sql/sql_insert_into_select.asp