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个回答

参照下这个
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: 你这不可能的我测试过的,你可以试试
接近 4 年之前 回复
lzyyqxxh
lzzyqxxh 我之前也是用not exists写的,条件跟这个一样,但是当t2里面存在一条跟t1完全相同的数据时(就是select 1 from ....这个语句得到的是非空的结果时)其他的数据也不添加了……
接近 4 年之前 回复

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
贵阳老马马善福专业维修游泳池堵漏防水工程 回复lzzyqxxh: 好吧,当然需要where。
接近 4 年之前 回复
lzyyqxxh
lzzyqxxh 额,这样就行了吗?不要在第一个not前面加where吗?
接近 4 年之前 回复

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: 自己试试就知道了啊,脚本都给你了,实践下
接近 4 年之前 回复
lzyyqxxh
lzzyqxxh 如果往course表里面添加一条yes,15的数据,然后再走一遍,看看能不能走动?
接近 4 年之前 回复
lzyyqxxh
lzzyqxxh 这样没问题吗?我回去试试。
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!