0

2 つの mysqli クエリを作成したい。しかし、最初のクエリから得られた値と同じ値が 2 番目のクエリにある場合、それらの値を結果セットから除外したいと考えています。私が今持っているものは、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

2 番目のクエリを次のように変更できます。

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

または、2 つのテーブルのうちの 1 つだけを選択したい場合もありますUNION(デフォルトでは重複は省略されます)。

  SELECT colTab1 FROM table1
UNION
  SELECT colTab2 FROM table2

(各レコードセット内に存在する重複も省略されるため、2 つのレコードセット間の重複を省略することに依存するUNIONことはまったく同じではないことに注意してください。それが懸念される場合は、SELECT DISTINCT ... UNION ALL SELECT DISTINCT ...代わりに行うことができます)。

于 2013-04-30T13:07:56.543 に答える
1

1 つのクエリを実行するだけです。データベースからデータを取得してフィルター処理するのはなぜですか? DB でフィルタリングします。

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