第1个回答 2011-04-09
1。 用a表第一条记录去找b表第一条记录,如果dz不同,反馈到结果。2。用a表第一条记录去找b表第二条数据,如果dz不同,反馈到结果,如此循环,直到b表最后一条,然后a表条到下一条,继续循环。所以如果a表2条数据,b表三条数据,dz都不同的话,结果是:2*3=6条。你的误区在于:a表和b表除了dz外,缺少一个一一对应的主键。所以应该用 select a.* from ys.dbf where dz not in(select dz from old.dbf)
第2个回答 2011-04-08
not in可以,不过要有一个提取不同的主要标识字段。
最好还是使用NOT EXISTS,效率要高的多。
SELECT * FROM A WHERE NOT EXISTS (SELECT 1 FROM B WHERE A.XM = B.XM ...)
UNION ALL
SELECT * FROM B WHERE NOT EXISTS (SELECT 1 FROM A WHERE B.XM = A.XM ...)
第3个回答 2011-04-08
not in 是可以的
SELECT * FROM A WHERE xm NOT IN (SELECT xm FROM B)本回答被网友采纳