vf或者sql之中两个表如何提取不同的部分?

有两个表A和B
A表数据 xm xh xb sr
gg 101 男 1982
ww 102 男 1983
ss 103 女 1984
rr 104 女 1982
B表 xm xh xb sr
gg 101 男 1982
ss 102 男 1982
ss 103 女 1983
rr 104 女 1982
请问怎么样的代码可以提取出不同的数据,使用not in 好像提取不出来

第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)本回答被网友采纳
相似回答
大家正在搜