追蹤
趨勢報報 ........
關於部落格
就是想追索下一步!
  • 65577

    累積人氣

  • 0

    今日人氣

    1

    追蹤人氣

比對兩個資料筆數龐大的table, 是否異動或新增!

  • 程式碼:

<?PHP

$i = 0;
$update_date = date("Y-m-d");
$data = array();

$SQL1 = "SELECT * FROM table1 WHERE 1";
$Result1 = mysql_query($SQL1);

// 從資料庫table1所取得的全部資料, 放入陣列中
while(list($a,$b,$c)=mysql_fetch_row($Result1)) {
  $data['a'] = $a;
  $data['b'] = $b;
  $data['c'] = $c;
  $ii++; // table1 的資料筆數
}

// 讀取table2資料
$SQL2="SELECT * FROM table2 WHERE 1";
$Result2 = mysql_query($SQL2);

// 比對 table1 與 table2 的資料
while(list($a,$b,$c)=mysql_fetch_row($Result2)) {
  $jj = 0;
  while($jj<$ii) {
    // 檢查是否異動, 如果是就更新!
    if($data['a'] == $a) {
      if($data['b']!=$b || $data['c'][$i]!=$c) {
       mysql_query("UPDATE table1 SET b='$b',c='$c',update_date='$update_date' WHERE a='$a'");
      }
      break;
    }
    $jj++;
  }

  // 如果查詢整個table1, 仍找不到, 即表示此筆資料為新增記錄!
  if($jj == $ii) {
    mysql_query("INSERT INTO table1 (a,b,c,update) VALUES ('$a','$b','$c','$update_date')");
  }
}

?>

有興趣的朋友,不妨試試看,但我相信應有更好的方法,也請不吝賜教!

回應 魚兒來 :
迫不急待的把你的大作貼出來比較比較, 希望別介意! 想來一定是比小弟我用急就章的手法要好!

<?PHP
 ini_set("memory_limit", "512M");

 $i = 0;
 $update_date = date("Y-m-d");
 $data = array();

 $SQL1 = "SELECT * FROM table1 WHERE 1"; $Result1 = mysql_query($SQL1);

 $tbl1 = mysql_fetch_row($Result1);

 // 讀取table2資料
 $SQL2="SELECT * FROM table2 WHERE 1";
 $Result2 = mysql_query($SQL2);

 // 比對 table1 與 table2 的資料
 while(list($a,$b,$c)=mysql_fetch_row($Result2)) {
         $jj = 0;
         while($jj<count($tbl1)) {
         // 檢查是否異動, 如果是就更新!
              if($tbl1['a'] == $a) {
                    if($tbl1['b']!=$b || $tbl1['c'][$i]!=$c) {
                           mysql_query("UPDATE table1 SET b='$b',c='$c',update_date='$update_date' WHERE a='$a'");
                    }
                    array_splice($data, $jj, 1);
                    break;
              }
              $jj++;
       }

       // 如果查詢整個table1, 仍找不到, 即表示此筆資料為新增記錄!
       if($jj == $ii) {
            mysql_query("INSERT INTO table1 (a,b,c,update) VALUES ('$a','$b','$c','$update_date')");
        }
 }
?>

相簿設定
標籤設定
相簿狀態