我想制作2个mysqli查询。但是,如果第二个查询中的值与第一个查询产生的值相同,我想从结果集中排除这些值。我现在所拥有的只是相同的价值。显示其余相同的值。我应该怎么改变这个?谢谢。
$query1 = $db->query("SELECT colTab1 FROM table1");
while ($result1 = $query1 ->fetch_assoc()) {
$query2 = $db->query("SELECT colTab2 FROM table2 WHERE colTab2 <> $result1[colTab1]");
echo $result1['colTab1']."<br>";
}
while ($result2 = $query2 ->fetch_assoc()) {
echo $result2['colTab2']."<br>";
}
}
答案 0 :(得分:3)
好吧,您可以按如下方式修改第二个查询:
SELECT colTab2 FROM table2 WHERE colTab2 NOT IN (SELECT colTab1 FROM table1)
或者您可能只想选择两个表中的UNION
(默认情况下会省略重复项):
SELECT colTab1 FROM table1
UNION
SELECT colTab2 FROM table2
(请注意,依赖UNION
省略两个记录集之间的重复项并不完全相同,因为每个记录集中存在的任何重复项也将被省略;如果这是一个问题,可以{{ 1}}代替)。
答案 1 :(得分:1)
只需运行一个查询;为什么要从数据库中恢复数据来过滤?在DB中过滤。
SELECT colTab2
FROM table2
WHERE colTab2 NOT IN (
SELECT colTab1
FROM table1
)