0

我想做 2 个 mysqli 查询。但是,如果第二个查询中的值与第一个查询产生的值相同,我想从结果集中排除这些值。我现在所拥有的似乎只适用于 1 个相同的值。显示了其余相同的值。我应该如何改变这个?谢谢。

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

2 回答 2

3

好吧,您可以按如下方式修改第二个查询:

SELECT colTab2 FROM table2 WHERE colTab2 NOT IN (SELECT colTab1 FROM table1)

或者,也许您只想选择UNION两个表中的一个(默认情况下会省略重复项):

  SELECT colTab1 FROM table1
UNION
  SELECT colTab2 FROM table2

(请注意,依赖于UNION省略两个记录集之间的重复项并不完全相同,因为每个记录集中存在的任何重复项也将被省略;如果这是一个问题,可以SELECT DISTINCT ... UNION ALL SELECT DISTINCT ...改为)。

于 2013-04-30T13:07:56.543 回答
1

只需运行一个查询;为什么要从数据库中取回数据进行过滤?在数据库中过滤。

SELECT colTab2 
FROM table2 
WHERE colTab2 NOT IN (
    SELECT colTab1
    FROM   table1
)
于 2013-04-30T13:08:03.123 回答