我想比较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'];
}
但结果仍会返回所有数据。怎么了?谢谢:)
答案 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;