假设我有一个名为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完成吗?答案 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
要以块的形式插入,请使用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