2 lzyyqxxh lzyyqxxh 于 2016.02.02 15:22 提问

oracle的“不满足”某个条件该怎么写

比如,我想写一个语句
insert into t1(t1.a,t1.b)
select (t2.a,t2.b) from t2 “不满足”
(t2.a=t1.a and t2.b=t1.b);
以上,求大神解惑。

3个回答

Yiran8935
Yiran8935   2016.02.02 15:37
已采纳

参照下这个
insert into student(sname,sage) select t2.cname,t2.cid from course t2 where not exists
(select 1 from student t1 where t1.sname = t2.cname and t1.sage = t2.cid);

Yiran8935
Yiran8935 回复lzyyqxxh: 你这不可能的我测试过的,你可以试试
接近 2 年之前 回复
lzyyqxxh
lzyyqxxh 我之前也是用not exists写的,条件跟这个一样,但是当t2里面存在一条跟t1完全相同的数据时(就是select 1 from ....这个语句得到的是非空的结果时)其他的数据也不添加了……
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.02 15:28

insert into t1(t1.a,t1.b)
select (t2.a,t2.b) from t2 not(t2.a=t1.a and t2.b=t1.b);
或者
insert into t1(t1.a,t1.b)
select (t2.a,t2.b) from t2 not(t2.a=t1.a) or not (t2.b=t1.b);

caozhy
caozhy 回复lzzyqxxh: 好吧,当然需要where。
接近 2 年之前 回复
lzyyqxxh
lzyyqxxh 额,这样就行了吗?不要在第一个not前面加where吗?
接近 2 年之前 回复
Yiran8935
Yiran8935   2016.02.02 15:54

create table student(
sname varchar2(10) not null,
sage number(3)
);

create table course(
cname varchar2(10) not null,
cid number(3)
);

insert into student values('YES',14);
insert into student values('YES',13);
commit;

insert into course values('YES',13);
commit;

select * from course;
select * from student;

insert into student(sname,sage) select t2.cname,t2.cid from course t2 where not exists
(select 1 from student t1 where t1.sname = t2.cname and t1.sage = t2.cid);

Yiran8935
Yiran8935 回复lzyyqxxh: 自己试试就知道了啊,脚本都给你了,实践下
接近 2 年之前 回复
lzyyqxxh
lzyyqxxh 如果往course表里面添加一条yes,15的数据,然后再走一遍,看看能不能走动?
接近 2 年之前 回复
lzyyqxxh
lzyyqxxh 这样没问题吗?我回去试试。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!