表A 主码为 产品(xh) 日期(rq)表B为 主码为 产品(xh) 日期(rq)其中,表B为A的一个子集怎么才能把 A 不包括 B 的那部分数据列出来,交集好弄,补集怎么写sql
解决方案 »
- Database link 优化查询
- 为什么同样的数据量,只加了个条件,执行效率会差这么大?
- OCI 为什么输出为空?
- sqlserver导出到oracle遇到的问题(原帖在SQLSERVER版没解决)
- 怎样把一个用户创建的表以及sequences 等 对象,复制到另外一个用户下
- 显示表的SQl 语句?
- 怎样用select 语句 查 table是哪个用户下的table?
- db_block_lru_latches设置一下怎么就不能起动了呢?
- 有谁用过Oracle的timestamp类型
- PLSQL导入pde文件失败
- 数据库合并字段
- 请教oracle触发器,当存在orderid这个记录则更新其他字段,不存在则插入
select * from A,B
where A.xh != B.xh and A.rq != B.rq
select * from (
select xh,rq from A minus select select xh,rq from B
)
select xh,rq from A,B
where A.xh = B.xh(+) and A.rq=B.rq(+) and B.xh is null and B.rq is null
where A.xh != B.xh and A.rq != B.rq--其他的应该也是OK的啊?怎么会选出交集呢?你把数据贴出来我看下!
--你用这个sql再试下
[code=SQL]select A.xh,A.rq,B.xh,B.rq from A,B
where A.xh = B.xh(+) and A.rq=B.rq(+) and B.xh is null and B.rq is null
[/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'));
实测结果:
可以用exists来代替