0

次の列を持つdogsというテーブルがあるとします。

id, fk_hospital, fk_owner, date, name

そして、次の列を持つ別のテーブルを作成したいと思います。

fk_hospital, fk_owner, fk_dogs, what_type

この2番目のテーブルでは、fk_dogsが最初のテーブルのIDになります。また、what_typeはデフォルトでNULLになります。

つまり、基本的には、最初のテーブルから2番目のテーブルにダンプしたいと思います。2番目のテーブルの作成テーブルは次のようになります。

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)
)

コンテンツを最初から2番目にダンプするにはどうすればよいですか?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

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

ORDERBYを参照してください

于 2012-11-21T09:25:45.030 に答える
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 に答える