排除第二个mysqli查询的重复结果

时间:2013-04-29 20:44:53

标签: php mysql mysqli

我有2个mysqli查询,我想从第二个查询中排除第一个查询已经产生的相同结果值。所以,如果有2个这样的表:

table1:               table2:

       column                 column
       -------                -------
          1                      1
          2                      6
          3                      7
          4                      3                     
          5                      8

第一个查询的结果将是:

1,2,3,4,5

,第二个查询的结果将是:

6,7,8  

这是我尝试过的:

$query1 = $db->query("SELECT column FROM table1");
$query2 = $db->query("SELECT column FROM table2");

while ($result1 = $query1 ->fetch_assoc()) {
  echo $result1['column']."<br>";
}
while ($result2 = $query2 ->fetch_assoc()) {
 if($result2['column'] !==  $result1['column']){ // this part is not working
    echo $result2['column']."<br>"; 
  }
 }

但条件无效。感谢。

2 个答案:

答案 0 :(得分:2)

您可以直接在SQL中解决这个问题。使用union只获得1个结果:

SELECT column_1 as result_column FROM table1
union
SELECT column_2 as result_column FROM table2

如果列的名称不同,则可以使用相同的别名

答案 1 :(得分:0)

它会给SQL服务器带来更多的负载,但你可以在SQL中轻松地做到这两个单独的查询:

SELECT column FROM table1;
SELECT column FROM table2 WHERE column NOT IN (SELECT column FROM table1);

你可能也会得到一点点发烧友,如果你愿意,可以让一个查询返回两列,但是我必须对数据库进行实际尝试,以确保我做对了。