2 つの MySQL テーブルがあります。最初のテーブルには、5 分ごとに更新される cron ジョブが実行されています。cron ジョブが実行されると、すべてのデータが最初のテーブルから 2 番目のテーブル (アーカイブ テーブル) に移動され、最初のテーブルが切り捨てられ、特定の URL で常に更新されている CSV ファイルから情報が更新されます。あるテーブルから次のテーブルに構造をコピーしてテーブルを作成しました (したがって、それらは構造が同一です)。
私が実行しているコードは次のとおりです。
$sql = "
INSERT INTO table2 (id, time, size, location, county, state, lat, lon, comments)
SELECT id, time, size, location, county, state, lat, lon, comments FROM table1";
$result = $mysqli->query($sql);
問題は、cron ジョブが頻繁に実行されるため、常に完全に更新されるとは限らないため、table2 に重複したエントリが作成されることです。使用しようとしていたコードは次のとおりですが、機能していないようです。
$sql = "
INSERT INTO table2 (id, time, size, location, county, state, lat, lon, comments)
SELECT id, time, size, location, county, state, lat, lon, comments FROM table1
ON DUPLICATE KEY UPDATE id=id
";
$result = $mysqli->query($sql);
両方のテーブルのキーが同じ (id) であることを確認しました。
これらの操作は一緒に機能しませんか、それとも私の構文がどこかで間違っていますか? テーブルを更新してから別の操作を実行して後で重複を取り除くのではなく、これらの操作をすべて一度に実行したかったのです。
ご協力いただきありがとうございます!