首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求一sql,求2个表的补集,该如何处理

2012-04-01 
求一sql,求2个表的补集表A 主码为 产品(xh) 日期(rq)表B为 主码为 产品(xh) 日期(rq)其中,表B为A的一个子

求一sql,求2个表的补集
表A 主码为 产品(xh) 日期(rq)

表B为 主码为 产品(xh) 日期(rq)

其中,表B为A的一个子集

怎么才能把 A 不包括 B 的那部分数据列出来,交集好弄,补集怎么写sql

[解决办法]
如果是主key的话,这样就应该可以了
select * from A,B
where A.xh != B.xh and A.rq != B.rq
[解决办法]
这哪是补集啊,这是差集啊(A-B)。
实测数据:

SQL code
CREATE TABLE T150(    xh NUMBER(2),    rq DATE);INSERT INTO T150 VALUES(0, to_date('2012-02-27', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(0, to_date('2012-02-28', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(0, to_date('2012-02-29', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(1, to_date('2012-03-01', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(1, to_date('2012-03-02', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(1, to_date('2012-03-03', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(2, to_date('2012-03-06', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(2, to_date('2012-03-07', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(2, to_date('2012-03-08', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(3, to_date('2012-03-10', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(3, to_date('2012-03-11', 'YYYY-MM-DD'));INSERT INTO T150 VALUES(3, to_date('2012-03-12', 'YYYY-MM-DD'));CREATE TABLE T151(    xh NUMBER(2),    rq DATE);-- T151中的数据是典型的,(1条未取,取1条,取2条,全取)INSERT INTO T151 VALUES(1, to_date('2012-03-01', 'YYYY-MM-DD'));INSERT INTO T151 VALUES(2, to_date('2012-03-06', 'YYYY-MM-DD'));INSERT INTO T151 VALUES(2, to_date('2012-03-07', 'YYYY-MM-DD'));INSERT INTO T151 VALUES(3, to_date('2012-03-10', 'YYYY-MM-DD'));INSERT INTO T151 VALUES(3, to_date('2012-03-11', 'YYYY-MM-DD'));INSERT INTO T151 VALUES(3, to_date('2012-03-12', 'YYYY-MM-DD'));
[解决办法]
select * from a where (xh,rq) not in(select xh,rq from b)

这样好像也行

热点排行