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

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

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - sqlserver exists,not exists的用法

sqlserver exists,not exists的用法

2019-11-19 15:30MSSQL教程網 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表的數據:
        ID NAME            DEPTMENT_ID
---------- --------------- -----------
         1 echo                   1000
         2 spring                 2000
         3 smith                  1000
         4 liter                  2000

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

select_course表的數據:
        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 的查詢結果中確實有記錄不存在(1查詢中),查詢結果返回沒有選的課程,

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

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有查詢結果(id為子查詢中的course.id ),

因此select id,name from t_student 將執行查詢(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結果集不為空,not exists 判斷結果為false;

select id,name from t_student 不執行查詢。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本xxxxxx片免费播放18 | 日韩无砖2021特黄 | 国产欧美综合一区二区 | 我将她侵犯1~6樱花动漫在线看 | 欧美一级特黄特色大片 | 亚洲成人免费 | 成年人免费在线看的惊悚动作片 | 日本偷偷操 | 国产99久久久国产精品成人 | 国产精品久久久免费视频 | 高清不卡免费一区二区三区 | 亚洲一级特黄特黄的大片 | ass极品美妇pic | 亚飞与亚基高清国语在线观看 | 妹妹你插的我好爽 | 国产一区在线看 | 经典WC女厕所里TV | 韩国三级日本三级香港三级黄 | 午夜宅男在线观看 | 王淑兰与铁柱全文免费阅读 | 色综合网天天综合色中文男男 | 欧美性videossex丝袜 | 欧美成人一区二区三区 | 久久国产主播福利在线 | 北条麻妃一区 | 4hu影院永久在线播放 | 亚洲大爷操| 日韩欧美一区二区三区中文精品 | 色综色天天综合网 | 国产成人一区二区三区影院免费 | 午夜亚洲WWW湿好大 午夜想想爱 | 精品亚洲456在线播放 | 美女被狂揉下部羞羞动漫 | 黄情视频 | 国产成人精品.一二区 | 久久全国免费久久青青小草 | 五月色婷婷在线影院 | 日本成日本片人免费 | 国产全部视频 | 国产成人精品一区二三区2022 | 欧美一级欧美三级在线 |