3

我想比较 2 个表以获取不同的数据。

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

我想比较doc_namedoc_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) 

您的查询中的错误是您要连接两个表,因此您总是会在 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 回答