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


exclude duplicate results from second mysqli query

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

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>"; 
  }
 }

但条件无效。谢谢。

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

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

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

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

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

如果你愿意的话,你也可以更花哨一点,让它成为一个查询返回两列,但我必须对数据库进行实际尝试,以确保我做对了