0

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

id, fk_hospital, fk_owner, date, name

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

fk_hospital, fk_owner, fk_dogs, what_type

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

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

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

4 回答 4

3

您可以使用 MySQL:

INSERT INTO dogs_info SELECT fk_hospital, fk_owner, id, NULL FROM dogs
于 2012-11-21T09:21:24.153 回答
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
于 2012-11-21T09:21:11.390 回答
0

你可以试试这个 select 和 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']);
}
于 2012-11-21T09:22:22.343 回答
0

不需要 PHP 。

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

请参阅插入...选择

对于插入块使用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

请参阅订购方式

于 2012-11-21T09:25:45.030 回答