我有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>";
}
}
但条件无效。感谢。
答案 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);
你可能也会得到一点点发烧友,如果你愿意,可以让一个查询返回两列,但是我必须对数据库进行实际尝试,以确保我做对了。