acle not inOracle IN与NOT IN的比较(oraclein和or)

oracle的IN与NOT IN用来比较两个值之间的不同,它们都属于子查询,用来比较两个不同的值,用来指示结果行是否存在于输入数组。

在SQL语句中,IN主要用来表示筛选满足全部条件的行,而NOT IN则表示排除不满足条件的行。

来看下面的实例:

IN:表示筛选出满足下列任意一条件的学生。

SELECT NAME FROM STUDENT WHERE CLASS IN (‘A’,’B’,’C’);

NOT IN:表示排除不满足任意一条件的学生。

SELECT NAME FROM STUDENT WHERE CLASS NOT IN (‘A’,’B’,’C’);

以上给出的SQL语句使用的是Oracle中的IN(括号内的多个值形成的数组)和NOT IN来进行筛选。ORACLE还提供了另外一种筛选方式——EXISTS操作符。EXISTS与IN和NOT IN不同,它使用子查询来测试某种情况是否存在(在子查询中返回至少一条记录)。

比如,要查找满足以下条件的学生(学生在该班级中应及格):

SELECT NAME FROM STUDENT WHERE EXISTS

(SELECT A FROM STUDENT_REPORT WHERE STUDENT.SID=STUDENT_REPORT.SID

AND GRADE >66);

以上SQL语句非常有用,它使用EXISTS操作符,根据给出的子查询获得结果集来筛选出学生的学习成绩达到及格标准的学生。

总的来说,Oracle的IN与NOT IN操作符是用来在多个变量中筛选满足条件的行;而EXISTS操作符是用来检查一个查询是否返回了至少一条记录,如果返回则表示存在,不返回则表示不存在。虽然它们都属于子查询,但是他们筛选的条件方式还是有所不同,IN与NOT IN使用的是等号匹配的方式,而EXISTS则使用的是子查询的返回结果来判断。


数据运维技术 » acle not inOracle IN与NOT IN的比较(oraclein和or)