0

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

但条件无效。谢谢。

4

2 回答 2

2

您可以直接在 SQL 中解决该问题。用于union仅获得 1 个结果:

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

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

于 2013-04-29T20:46:03.837 回答
0

它会给 SQL 服务器带来更多的负担,但您仍然可以在 SQL 中轻松地完成这两个单独的查询:

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

如果您愿意,您可能还可以变得更花哨,并使其成为一个返回两列的查询,但我必须实际尝试对数据库进行测试以确保我做对了。

于 2013-05-01T13:49:57.700 回答