在一个表中为另一个表中的所有行插入值

时间:2015-11-02 16:36:18

标签: mysql sql

我想写一个sql脚本,它会在表中插入一些其他表中所有id的值。

create table person
(
    id int(11) not null auto_increment,
    name varchar(255),
    primary key (id)
);

insert into person
values (null, 'John'), (null, 'Sam');

select * from person;

id | name
----------
1  | John
2  | Sam

create table phone_details
(
    id int(11) not null auto_increment,
    person_id int(11),
    phone int(11),
    constraint person_ibfk_1 foreign key (person_id) references person (id) on delete no action,
    primary key (id)
);

现在,在phone_details表中,我想要以下内容:

id | person_id | phone
----------------------------
1  |    1      | 9999999999
2  |    2      | 9999999999

我该怎么做?目前,我使用Java编写这个一次性脚本,但我认为必须有一种在sql中执行此操作的方法。

1 个答案:

答案 0 :(得分:3)

您可以使用INSERT INTO ... SELECT语法:

INSERT INTO phone_details(person_id,phone)
SELECT id, 99999999
FROM person;

storing phone number 视为VARCHAR

SqlFiddleDemo