查找不同MySQL服务器中不在两个表中的数据

时间:2011-11-06 23:07:57

标签: php mysql

我正在寻找比较两个表的方法,并确定一个表中缺少哪些行。这两个表位于不同的MySQL服务器上。

Table 1
----------------
Apple
Microsoft
Google

Table 2 
----------
Apple
Google

我想要的是显示表1中缺少的项目列表。

2 个答案:

答案 0 :(得分:0)

有几种方法可以获得您想要的结果,如果您想使用PHP,最简单的方法是这样:

$table1 = mysql_query("SELECT fieldname.....");
$table2 = mysql_query("SELECT fieldname.....");

$results_table2 = mysql_fetch_array($table2);
while($row = mysql_fetch_assoc($table2))
  {

  if(!in_array($row['fieldname'], $results_table2))
    {

    echo $row['fieldname'] ." not in both tables";

  }

}

甚至可以使用array_intersect而不是while循环。

$table1 = mysql_query("SELECT fieldname.....");
$table2 = mysql_query("SELECT fieldname.....");

$results_table1 = mysql_fetch_array($table1, MYSQL_ASSOC);
$results_table2 = mysql_fetch_array($table2, MYSQL_ASSOC);

$result1 = array_intersect($results_table1, $results_table2);
print_r($result1);

$result2 = array_diff($results_table1, $results_table2);
print_r($result2);

答案 1 :(得分:0)

我认为您应该选择表1中的所有数据并将它们放在array-table1中并对表2执行相同操作,但对于table2,将它们放在array-table2中。然后比较两个数组并显示不在array-table1或array-table2中的数据。我希望它会有所帮助。