3

2つのテーブルを比較して、同じではないデータを取得したいと思います。

tb1              tb2
==============   ==============
|id| doc_name|   |id| doc_summ|
==============   ==============
|1 | 01180543|   |1 | 01180543|
|2 | Chord   |   ============== 
============== 

doc_name比較したいdoc_summです。その例から、結果はである必要がありますChord

$q = mysql_query(" SELECT t1.doc_name FROM tb1 as t1, tb2 as t2 WHERE t1.doc_name != t2.doc_summ");
while ($row = mysql_fetch_array($q)){
    $doc_copy = $row['doc_name'];
}

ただし、結果にはすべてのデータが返されます。どうしたの?ありがとうございました :)

4

3 に答える 3

6

を使用して両方のテーブルを結合できますLEFT JOIN。テーブル 2 に一致するものがない場合、テーブル 1 のレコードのみを表示します。

SELECT  a.*
FROM    tb1 a
        LEFT JOIN tb2 b
            ON a.doc_name = b.doc_summ
WHERE   b.doc_summ IS NULL
于 2012-10-13T05:16:48.013 に答える
4

これを試して:

SELECT t1.doc_name 
FROM   t1 
WHERE  NOT EXISTS(SELECT t2.doc_summ 
                  FROM   t2 
                  WHERE  t2.doc_summ = t1.doc_name) 

クエリの間違いは、2 つのテーブルを結合していることです。そのため、t2 には where 条件を満たさない行が常にあるため、すべてのデータが表示されます。

デモ

于 2012-10-13T05:09:27.807 に答える
0

多分あなたはこれを試すことができます

select tb1.doc_name from tb1 left join tb2 on tb1.id = tb2.id where tb1.doc_name != tb2.doc_summ;
于 2012-10-13T05:19:30.200 に答える