-1

異なる mysql データベースに 2 つのテーブルがあります。

テーブル A からテーブル B にコピーしたいのですが、片道だけです。テーブル B から最後の日時を読み取り、この読み取り日時の後にテーブル A にデータが追加されたかどうかを確認する必要があります。追加されたデータがある場合は、それをコピーします。

私はこれを試しました:

ページを更新すると 1 行が書き込まれますが、1 回の読み込みですべてを書き込む必要があります。

do
   {

#TABLE A    
$querylastA = "SELECT * FROM `stock` ORDER BY `jrk` DESC LIMIT 1";
$resultlastA = mysql_query($querylastA) or die(mysql_error());
while($rows=mysql_fetch_array($resultlastA)){
$lastcodeA = $rows['datetime'];
}

#TABLE B
$querylastB = "SELECT * FROM `stockcopy` ORDER BY `jrk` DESC LIMIT 1";
$resultlastB = mysql_query($querylastB) or die(mysql_error());
while($rows=mysql_fetch_array($resultlastB)){
$lastcodeB = $rows['datetime'];
}

#TABLE A - NEXT DATE AFTER LAST DATE IN TABLE B
$querynextA = "SELECT datetime FROM stock WHERE datetime > '$lastcodeB' ORDER BY datetime ASC LIMIT 1";
$resultnextA = mysql_query($querynextA) or die(mysql_error());
while($rows=mysql_fetch_array($resultnextA)){
$nextcodeA = $rows['datetime'];
}


   mysql_query("INSERT INTO stockcopy(datetime, data1, data2) SELECT datetime, data1, data2 FROM stock WHERE datetime = '$nextcodeA'");
   echo "Date from table A " . $lastcodeA . "<br>";
   echo "Date from table B " . $lastcodeB . "<br>";
   }
 while ('$lastcodeA' == '$lastcodeB');
4

3 に答える 3

1

ステートメントを使用してテーブルにデータを挿入できるSELECTため、SELECT.

例えば:

INSERT INTO table_example(foo, bar)
SELECT foo, bar FROM table_example2
WHERE time_condition > {SOME DATE}

SELECTこれにより、ステートメントが返す行 (時間条件を満たす行) が table_example に挿入されます。{SOME DATE} を実際の日付 (括弧なし) に置き換える必要があります。

また、参照してください: INSERT with SELECT

また、異なるデータベース間で列を選択する

于 2013-01-28T12:16:16.297 に答える
0

これは、SQL の知識がほとんどまたはまったくなくても実行できますが、少しの創造性があれば可能です :)

一時テーブル ( table_c) を作成し、その内容をコピーしますtable_a

次に手動で (これは phpmyadmim で削除クエリを実行することを意味します)、もはや重要ではない情報 (DELETE FROM table_c WHERE id < 1000たとえば ) を削除します。

次に、から情報をエクスポートしてtable_cにインポートしますtable_b(そして削除しますtable_c

于 2013-01-28T12:15:07.640 に答える
0

問題は次の場所にありました:while ('$lastcodeA' == '$lastcodeB');

それを次のように変更しましたwhile ($lastcodeA != $lastcodeB);。皆さん、ありがとうございました :)

于 2013-01-29T07:29:48.750 に答える