vf或者sql之中两个表如何提取不同的部分?
有两个表A和BA表数据xmxhxbsrgg101男1982ww102男1983ss103女1984rr104女1982B表xmxhxbsrgg101男1982ss102男...
有两个表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 好像提取不出来 展开
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 好像提取不出来 展开
3个回答
展开全部
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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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 ...)
最好还是使用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 ...)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
not in 是可以的
SELECT * FROM A WHERE xm NOT IN (SELECT xm FROM B)
SELECT * FROM A WHERE xm NOT IN (SELECT xm FROM B)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询