この質問に対する答えを見つけようとしましたが、どれも適切な答えがありません。
2 つのデータベースがあり、1 つには 15.000.000 エントリがあり、必要なデータを抽出して、約 33.000 エントリのはるかに小さなデータベースに保存したいと考えています。両方のデータベースが同時に開いています。または、少なくともそうあるべきです。
大きなデータベースを開いてそこからエントリを抽出しているときに、小さなデータベースの特定のテーブルに値が既に存在するかどうかを確認することはできますか? それをチェックする一般的な方法が必要です。
私のコードでは、最初に両方のデータベースを開きます (大きい方はoddsnavi_push、小さい方はoddsnavi_baby):
$database = "oddsnavi_push";
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
$database_baby = "oddsnavi_baby";
$db_handle_baby = mysql_connect($server, $user_name, $password);
$db_found_baby = mysql_select_db($database_baby, $db_handle_baby);
そして、oddsnavi_push からのデータの読み取りと計算を開始します。
$SQL_SELECT_ALL = "...giant query...";
$result_select_all = mysql_query( $SQL_SELECT_ALL );
while($db_field_all = mysql_fetch_assoc( $result_select_all ) ) {
$SQL_INSERT="INSERT INTO oddsnavi_baby.calc (id, one, two) VALUES ('$id', '$one', '$two')";
その時点まで機能します。読み込まれたデータ (id、one、two) を取得し、calc という名前のoddsnavi_baby テーブルの適切な列に挿入します。これは、odsnavi_baby が完全に空の場合に適切に行われます。
ただし、(特定の「id」が存在するかどうかに基づいて) エントリが存在しない場合にのみ、データベースを更新する必要があります。
編集:質問を言い換えます。クエリ結果 (大きなデータベース) から、すべての行について文字列を取得しています。たとえば、$string. 2 番目のデータベースを開いて、odsnavi_baby.calc テーブルのイベント列に $string 値があるかどうかを確認するにはどうすればよいですか?