在MySQL中将值从表转储到另一个表

时间:2012-11-21 09:18:03

标签: php mysql dump

假设我有一个名为dog的表,其中包含以下列:

id, fk_hospital, fk_owner, date, name

我想创建另一个包含以下列的表:

fk_hospital, fk_owner, fk_dogs, what_type

在第二个表中,fk_dogs将是第一个表的id。而what_type默认为NULL。

所以基本上,我想从第一个表转储到第二个表。第二个表的create表如下所示:

CREATE TABLE dogs_info (
fk_hospital char(4) NOT NULL,
fk_owner char(11) NOT NUL,
fk_dogs int(11) unsigned NOT NULL,
what_type tinyint(1) unsigned DEFAULT NULL,
PRIMARY KEY(fk_hospital, fk_owner, fk_dogs)
)

我怎样才能将内容从第一个转储到第二个?我需要任何服务器语言,比如PHP吗?或者我可以用mysql直接做到这一点?

编辑:我想通过块来实现这一点,所以首先要为特定的fk_hospital和fk_owner进行转储,然后为下一个fk_owner进行转储。这可以用MySQL完成吗?

4 个答案:

答案 0 :(得分:3)

您可以使用MySQL:

INSERT INTO dogs_info SELECT fk_hospital, fk_owner, id, NULL FROM dogs

答案 1 :(得分:0)

使用INSERT INTO..SELECT声明

INSERT INTO dogs_info(k_hospital, fk_owner, fk_dogs)
SELECT fk_hospital, fk_owner, ID as fk_dogs
FROM dogs

答案 2 :(得分:0)

您可以尝试此选择和while循环

$result = $mysqli->query('select fk_hospital, fk_owner from dogs');
while ($row = $result->fetch_assoc()) {
    $mysqli->query('insert into dogs_info ' .
                   '(fk_hospital, fk_owner, fk_dogs) ' .
                   'select fk_hospital, fk_owner, id ' .
                   'from dogs ' .
                   'where fk_hospital = ' . $row['fk_hospital'] .
                   ' and ' . $row['fk_owner']);
}

答案 3 :(得分:0)

不需要PHP。

INSERT INTO dogs_info(fk_hospital, fk_owner, fk_dogs)
SELECT fk_hospital,fk_owner,id
FROM dogs

请参阅INSERT INTO ... SELECT

要以块的形式插入,请使用ORDER BY子句

 INSERT INTO dogs_info(fk_hospital, fk_owner, fk_dogs)
    SELECT fk_hospital,fk_owner,id
    FROM dogs
    ORDER BY fk_hospital,fk_owner

请参阅ORDER BY