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