一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術|

服務器之家 - 數(shù)據(jù)庫 - Sql Server - sqlserver exists,not exists的用法

sqlserver exists,not exists的用法

2019-11-19 15:30MSSQL教程網(wǎng) Sql Server

exists,not exists的使用方法示例,需要的朋友可以參考下。

學生表:create table student
(
 id number(8) primary key,
 name varchar2(10),deptment number(8)
)

選課表:create table select_course
(
  ID         NUMBER(8) primary key,
  STUDENT_ID NUMBER(8) foreign key (COURSE_ID) references course(ID),
  COURSE_ID  NUMBER(8) foreign key (STUDENT_ID) references student(ID)
)

課程表:create table COURSE
(
  ID     NUMBER(8) not null,
  C_NAME VARCHAR2(20),
  C_NO   VARCHAR2(10)
)

student表的數(shù)據(jù):
        ID NAME            DEPTMENT_ID
---------- --------------- -----------
         1 echo                   1000
         2 spring                 2000
         3 smith                  1000
         4 liter                  2000

course表的數(shù)據(jù):
        ID C_NAME               C_NO
---------- -------------------- --------
         1 數(shù)據(jù)庫               data1
         2 數(shù)學                 month1
         3 英語                 english1

select_course表的數(shù)據(jù):
        ID STUDENT_ID  COURSE_ID
---------- ---------- ----------
         1          1          1
         2          1          2
         3          1          3
         4          2          1
         5          2          2
         6          3          2

1.查詢選修了所有課程的學生id、name:(即這一個學生沒有一門課程他沒有選的。)

分析:如果有一門課沒有選,則此時(1)select * from select_course sc where sc.student_id=ts.id 

and sc.course_id=c.id存在null,

這說明(2)select * from course c 的查詢結(jié)果中確實有記錄不存在(1查詢中),查詢結(jié)果返回沒有選的課程,

此時select * from t_student ts 后的not exists 判斷結(jié)果為false,不執(zhí)行查詢。

SQL> select * from t_student ts where not exists
 (select * from course c where not exists
    (select * from select_course sc where sc.student_id=ts.id and sc.course_id=c.id));        

        ID NAME            DEPTMENT_ID
---------- --------------- -----------
         1 echo                   1000

2.查詢沒有選擇所有課程的學生,即沒有全選的學生。(存在這樣的一個學生,他至少有一門課沒有選),

分析:只要有一個門沒有選,即select * from select_course sc where student_id=t_student.id and course_id
=course.id 有一條為空,即not exists null 為true,此時select * from course有查詢結(jié)果(id為子查詢中的course.id ),

因此select id,name from t_student 將執(zhí)行查詢(id為子查詢中t_student.id )。

SQL> select id,name from t_student where exists

 (select * from course where not exists

  (select * from select_course sc where student_id=t_student.id and course_id=course.id));

        ID NAME
---------- ---------------
         2 spring
         3 smith
         4 liter

3.查詢一門課也沒有選的學生。(不存這樣的一個學生,他至少選修一門課程),

分析:如果他選修了一門select * from course結(jié)果集不為空,not exists 判斷結(jié)果為false;

select id,name from t_student 不執(zhí)行查詢。

SQL> select id,name from t_student where not exists

 (select * from course where exists

  (select * from select_course sc where student_id=t_student.id and course_id=course.id));

        ID NAME
---------- ---------------
         4 liter

4.查詢至少選修了一門課程的學生。
SQL> select id,name from t_student where exists

 (select * from course where  exists

  (select * from select_course sc where student_id=t_student.id and course_id=course.id));

        ID NAME
---------- ---------------
         1 echo
         2 spring
         3 smith

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费精品一区二区三区在线观看 | 国产人成精品午夜在线观看 | 隔壁老王国产在线精品 | 性奶老妇 视频 | 激情综合色啪啪小说 | 亚洲 欧美 在线观看 | 91亚洲精品丁香在线观看 | 无码人妻精品一区二区蜜桃在线看 | 99国产精品免费观看视频 | 欧美日韩国产亚洲一区二区三区 | 男生同性啪视频在线观看 | 国产精品对白刺激久久久 | 天天草天天 | 国产日本免费 | 爽好舒服快想要免费看 | 美女跪式抽搐gif动态图 | 高跟丝袜人妖sissy露出调教 | 午夜视频一区二区三区 | 火影忍者羞羞 | 四虎精品免费视频 | 成人久久久 | 免费稚嫩福利 | 欧美最猛性xxxxx短视频 | 美女禁区视频免费观看精选 | 亚州人成网在线播放 | 国产最新精品视频 | 金牛网155755水心论坛黄大父母 | 日韩免费高清专区 | 高清国产激情视频在线观看 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | 小柔的性放荡羞辱日记 | 91好色 | 呜嗯啊野战h呻吟男男双性 污小说在线阅读 | 久久成人a毛片免费观看网站 | 国产成人高清亚洲一区91 | 楚乔传第二部免费播放电视连续剧 | 999任你躁在线精品免费不卡 | 午夜性色一区二区三区不卡视频 | 91香蕉在线 | 色淫阁小说 | 国产亚洲精品一区二区在线观看 |