织梦CMS - 轻松建站从此开始!

皇冠比分网,皇冠足球投注,www.yuan-ec.com

当前位置: 主页 > 皇冠网 >

select*fromt1whereexists-www.vipbocai.com

时间:2012-02-20 18:33来源:未知 作者:admin 点击:
EMPNO ENAME Select * from t1 where id=1 or id=2 orid=3 or id=NULL; 7521 WARD 8888 Dave 我们向emp 表里插入一些值: IN在逻辑上实际上就是对给定的成员聚集或者子查问结果集进行逐条的断定. 7499 ALLEN -------------------- 先看看exists 的履行进程:

EMPNO ENAME

Select * from t1 where id=1 or id=2 orid=3 or id=NULL;

7521 WARD

8888 Dave

我们向emp 表里插入一些值:

IN在逻辑上实际上就是对给定的成员聚集或者子查问结果集进行逐条的断定.

7499 ALLEN

--------------------

先看看exists 的履行进程:

使用exists 不受null 的影响。

当初看一下咱们之前使用not in 查不到结果,但用not exits 却能够查到:

------------------------------------------------- -----------------

7900 JAMES

共事说查询碰到一个奇异的事,2个表进行not in 操作没有返回结果,畸形情形下应当是有返回的。

SQL> selectempno,ename from emp where job not in (select job from emp1);

实际执行的命令等价于:

SQL> selectempno,皇冠平台开户,ename from emp where job in(select job from emp1);

a != NULL

a IS NULL

forxin(select*fromt1)
loop
if(exists(select*fromt2wheret2.col1=x.col1))
then
OUTPUTTHERECORDin x
endif
endloop

UNKNOWN

EMPNO ENAME

这样当我们的X.job 为NULL 时,满意条件,输出了Dave 的记载。

这里我们只插入了empno和ename,其余为空。

下面进行2张表的的操作:

EMPNO ENAME

7369 SMITH

我们上边的查询等价于:

DBA1 群:62697716(满);DBA2 群:62697977(满) DBA3 群:62697850(满)

7876 ADAMS

解决方式就是在in 和not in的操作之前先把NULL 过滤掉。

个别来说,新2足球正网,问题能重现就是好新闻,最怕不能重现。

UNKNOWN

10

NULL

我们在emp 表里查询的记录有空值,并且我们进行not in 和exists 操作时,都是用null 来判断的,如果我们换成非null 字段就可以正常进行操作了。

a != 10

--------------------

UNKNOWN

Email:dvd.dba@gmail.com

7788 SCOTT

ENAMEVARCHAR2(10)

a = 10

EMPNO ENAME

select * fromt1 where id not in (1,2,皇冠走地比分,3,NULL);

EMPNO ENAME

等价于

但使用exists 一个很显明的长处,就是假如相干字段有索引的化,全讯网诸侯快讯,会应用索引来进行操作。而不须要进行全表扫描。 当表大的时候,效力确定是会比in 和not in 高。这也是我们在写SQL 时推举使用exists的起因。

SQL> createtable emp1 as select * from emp;

COMMNUMBER(7,2)

SQL>commit;

7844 TURNER

SQL>select empno,ename from emp A where notexists ( SELECT * FROM emp1 Bwhere B.job = A.job);

NULL

TRUE

TRUE

Connected.

select*fromt1whereexists(select*fromt2wheret2.col1=t1.col1)

7876 ADAMS

2.2 IN 和 NOT IN 判定说明

SQL> insertinto emp(empno,ename) values(8888,'Dave');

a = NULL

7788 SCOTT

Dave的记录 存在与emp 表,不存在emp1表。

7499 ALLEN

FALSE

7654 MARTIN

7844 TURNER

7521 WARD

DBA 超级群2:151508914 DBA9群:102954821 聊天 群:40132017(满)

7902 FORD

a IS NOT NULL

7782 CLARK

exists(select*fromt2wheret2.col1=x.col1)返回是一个布尔值,not exists只是对exists子句返回对布尔值取非,这与in跟not in是有实质差别的(not in是对in表白式取非,转换成另一种等价抒发式)

shows examples of various evaluations involving nulls inconditions. If the conditions evaluating toUNKNOWNwere used in aWHEREclauseof aSELECTstatement, then no rows would be returned for that query.

SQL>select empno,ename from emp A where notexists ( SELECT * FROM emp1 Bwhere B.job = A.job);

a != NULL

--加群需要在备注说明Oracle表空间和数据文件的关系,否则谢绝申请

EMPNO ENAME

NOT IN 的逻辑关联可以懂得为:NOT (X=Y OR N=M) 等价于 X,皇冠足球网址!=Y AND N,皇冠足球投注!=M。那么:

Select * from t1 where id=1or id=2 or id=3

8888 Dave

UNKNOWN

Table 3-20 ConditionsContaining Nulls

7934 MILLER

10

14 rowsselected.

SQL> descemp

DEPTNONUMBER(2)

no rowsselected

7654 MARTIN

a IS NULL

8888 Dave

10

Condition

14 rowsselected.

Table created.

--------------------

换成exists 进行测试:

Select * fromt1 where id !=1 and id!=2 and id ,皇冠网!=3 and id !=NULL


--------------------

DBA6 群:158654907(满)DBA7 群:69087192(满) DBA8 群:172855474

7900 JAMES

7782 CLARK

7566 JONES

相称于:

7839 KING

10

Value of A

--------------------

7566 JONES

从上面的逻辑,也可以看出EXISTS语句实际上是通过轮回外部查询的结果集,来过滤出合乎子查询尺度的结果集。于是外部查询的结果集数目对该语句执行性能影响最大,故如果外部查询的结果集数量宏大,用EXISTS语句的机能也不必定就会好良多。

7698 BLAKE

7902 FORD

7698 BLAKE

-------------------------------------------------------------------------------------------------------

二.问题剖析

HIREDATE DATE

如:select * from t1 where id in(1,2,3,NULL);

Commitcomplete.

联机文档上的说明如下:

--------------------

SQL>select empno,ename from emp A where exists( SELECT * FROM emp1 B where B.job = A.job);

EMPNO ENAME

DBA 超级群:63306533(满);DBA4 群:83829929(满) DBA5群: 142216823(满)

7369 SMITH

--------------------


A condition that evaluates toUNKNOWNacts almost likeFALSE.For example, aSELECTstatement with a condition in theWHEREclausethat evaluates toUNKNOWNreturns no rows. However, a condition evaluatingtoUNKNOWNdiffers fromFALSEin that further operations onanUNKNOWNcondition evaluation will evaluate toUNKNOWN. Thus,NOTFALSEevaluatestoTRUE, butNOTUNKNOWNevaluates toUNKNOWN.

SALNUMBER(7,2)

将emp 表复制一份:

forxin(select*fromempA )
loop
if(notexists(select*fromemp2BwhereB.job=x.job )
then
OUTPUTTHERECORDin x
endif
endloop

--这里没有返回结果集,正常情况下应该反回我们之前insert 的dave。

NULL

根据上面的表,Id=NULL 为UNKNOWN。 那么无奈查询出列值为Null的记录。即等价于:

一.问题重现

Blog: http://blog.csdn.net/tianlesoftware

NameNull? Type

FALSE

NULL

MGRNUMBER(4)

EMPNO NOT NULLNUMBER(4)

SQL> selectempno,ename from emp where empno not in (select empno from emp1);

JOBVARCHAR2(9)

2.3 EXISTS 解释

UNKNOWN

Evaluation

Weibo:http://weibo.com/tianlesoftware

换成非null 字段就能正常显示了。

7839 KING

7934 MILLER

a IS NOT NULL

1 row created.

依据上面的NULL 表,id!=NULL 的成果为UNKNOWN。 那么该值为假,所以不论前面的前提虚实与否,全部逻辑断定为假,所以不返回任何记载。

2.1 Null 阐明

NULL

SQL> connscott/tiger;

NULL

IN功效上相当于 =ANY 的操作,而NOT IN 功能上相称于 !=ALL 的操作。

UNKNOWN

a = NULL

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
24日晚的全讯网www.1231222.com联欢晚会上,除了歌舞、变脸、篮球操等皇冠网www.h81888.com表演外,NBA(微博)快船(微博)队球星卡隆·巴特勒也来到现场与孩子们联欢。更让大家惊喜的是,姚明给了现场27位在8月过生日的小朋博彩通www.8231222.com友一个大大的惊喜——他亲自一一念出这些孩子的名字,邀请他们博彩网 上台,送上蛋糕,并号召现场所有人一起唱起生日歌。 “今天在留言板上看到了一句话:我们希望你们快乐。全讯网 www.1231333.com我相信这句话代表了我们所有志愿者、老师和工作人员的期望,我们希望你们博彩网http://www.1799111.com快 百家乐 www.1231888.com乐!”姚明说。