2013-04-30 45 views
0

我想做2個mysqli查詢。但是如果第二個查詢中的值與第一個查詢產生的值相同,我想從結果集中排除這些值。我現在所擁有的只是1個相同的值。顯示其餘的相同值。我應該如何改變這一點?謝謝。從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>"; 
     } 
    } 

回答

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 ...)。

+0

感謝您的所有信息。我使用NOT IN方法。它效果很好。 – user2014429 2013-04-30 13:22:15

1

只需運行一個查詢;爲什麼要從數據庫中取回數據以過濾?在數據庫中過濾。

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