比较两列以获取不相同的数据

时间:2012-10-13 05:02:04

标签: mysql sql

我想比较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'];
}

但结果仍会返回所有数据。怎么了?谢谢:)

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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条件的行,从而显示所有数据。

<强> DEMO

答案 2 :(得分:0)

也许你可以试试这个

select tb1.doc_name from tb1 left join tb2 on tb1.id = tb2.id where tb1.doc_name != tb2.doc_summ;