在表中为另一个表中的每个id插入行

Noo*_*oob 2 mysql database subquery sql-insert

基本上我有两个这样的表:

表1:用户

id_user, name, ...
Run Code Online (Sandbox Code Playgroud)

表2:叶子

id_2, employee (the column employee is the id of the user from the first table), ...
Run Code Online (Sandbox Code Playgroud)

现在表2是空的(没有行),对于第一个表中的每个用户,我想在第二个表上创建一行,将第一个表中的id作为列雇员中的值插入,如:

表2:叶子

id    employee    column1    column2    column3    column4    column5   
id1   1           date1      date2      integer1   integer2   string
id2   2           date1      date2      integer1   integer2   string
...
Run Code Online (Sandbox Code Playgroud)

我试过的INSERTS:

  1. 这个工作正常:

    INSERT INTO entitleddays (employee, startdate, enddate, type, days, description)
    VALUES (1, '2015-01-01', '2015-12-31', 3, 5, 'test');
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在这里,我尝试了上面解释的内容,但它不起作用:

    INSERT INTO entitleddays (employee, startdate, enddate, type, days, description)
    VALUES ((SELECT id from users), '2015-01-01', '2015-12-31', 3, 5, 'test');
    
    Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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

我确实理解错误:子查询找到了多个结果,因此它无法将值插入到员工中,我的问题是我不知道我应该使用什么语法作为菜鸟我.我只想在第二个表中为第一个表中的每一行创建一行(使用第一个表中的id).

Gor*_*off 11

只需使用insert . . . select:

INSERT INTO entitleddays (employee, startdate, enddate, type, days, description)
    SELECT id, '2015-01-01', '2015-12-31', 3, 5, 'test'
    FROM users;
Run Code Online (Sandbox Code Playgroud)

  • 菜鸟,仅供参考,子查询“(SELECT id from users)”返回多行,而“VALUE()”段应该只返回一行。因此,您创建的语句的“VALUES()”第一列有多个值,这不是有效的 SQL。 (2认同)