-2

まあ、SQL ユニオンを正しく使用する方法がわかりません。ドメイン (url) を持つ 2 つのテーブルがあります。テーブル 1 とテーブル 2 を比較して、テーブル 1 にないテーブル 2 から一意のドメインを取得します。

表1

id   domain
1    google.com
2    facebook
3    stackoverflow.com

テーブル2

id   domain
1    youtube.com
2    facebook
3    stackoverflow.com

だから私は両方のテーブルを比較してyoutube.comを取得したい

$query="SELECT table1.domain, table2.domain "."FROM table1, table2 "."WHERE table1.domain != table2.domain";
$result = mysql_query($query) or die(mysql_error());
while ($rec = mysql_fetch_array($result))
{
$new_url=$rec["domain"];
}

今、私は youtube.com youtube.com のような二重の結果を得るので、SQL ステートメントの問題点を教えてください

4

3 に答える 3

0

あなたは使用する必要があります

SELECT t2.domain FROM
table2 t2 LEFT JOIN table1 t1
    ON t2.domain = t1.domain
WHERE t1.domain IS NULL
于 2012-04-11T09:34:53.487 に答える
0

これはあなたが探しているSQLです

SELECT DISTINCT t1.domain FROM t1
WHERE domain not in (SELECT t2.domain FROM t2)
于 2012-04-11T09:35:49.193 に答える
0

必要な関係演算子は差です (和集合は加算に似ています)。標準 SQL では、キーワードは次のとおりですEXCEPT(Oracle ではMINUS、もう少し直感的な IMO です)。

SELECT domain
  FROM table2
EXCEPT 
SELECT domain
  FROM table1

「php」タグは MySQL を暗示していますか? MySQL には明示的な関係差分演算子がないため、 antijoin構造を使用する必要があります。

于 2012-04-11T10:47:40.890 に答える