数据库查询exists的用法.docx

上传人:苏美尔 文档编号:10677340 上传时间:2021-05-30 格式:DOCX 页数:6 大小:68.32KB
返回 下载 相关 举报
数据库查询exists的用法.docx_第1页
第1页 / 共6页
数据库查询exists的用法.docx_第2页
第2页 / 共6页
数据库查询exists的用法.docx_第3页
第3页 / 共6页
数据库查询exists的用法.docx_第4页
第4页 / 共6页
数据库查询exists的用法.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《数据库查询exists的用法.docx》由会员分享,可在线阅读,更多相关《数据库查询exists的用法.docx(6页珍藏版)》请在三一文库上搜索。

1、数据库查询exists的用法数据库查询exists的用法的用法你知道吗?下面就跟你们详细 介绍下数据库查询exists的用法的用法,希望对你们有用。数据库查询exists的用法的用法如下:有一个查询如下:复制代码代码如下:SELECT c.Customerld, CompanyNameFROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders oWHERE o.CustomerID = cu.CustomerID)这里面的EXISTS是如何运作呢?子查询返回的是 OrderId 字 段,可是外面的查询要找的是 CustomerID 和Comp

2、anyName 字段, 这两个字段肯定不在 OrderID里面啊,这是如何匹配的呢?EXISTS用于检查子查询是否至少会返回一行数据,该子查询实 际上并不返回任何数据,而是返回值 True或False。EXISTS指定一个子查询,检测行的存在。语法:EXISTS subquery。参数subquery 是一个受限的SELECT语句(不允许 有COMPUTE子句和INTO 关键字)。结果类型为 Boolean ,如 果子查询包含行,则返回 TRUE。在子查询中使用 NULL仍然返回结果集这个例子在子查询中指定NULL,并返回结果集,通过使用EXISTS仍取值为 TRUE。复制代码代码如下:SEL

3、ECT CategoryNameFROM CategoriesWHERE EXISTS (SELECT NULL)ORDER BY CategoryName ASC比较使用EXISTS和IN的查询这个例子比较了两个语义类似的查询。第一个查询使用EXISTS而第二个查询使用IN。注意两个查询返回相同的信息。复制代码代码如下:SELECT DISTINCT pub_nameFROM publishersWHERE EXISTS(SELECT *FROM titlesWHERE pub_id = publishers.pub_idAND type = business)复制代码代码如下:SELECT

4、 distinct pub_nameFROM publishersWHERE pub_id IN(SELECT pub_idFROM titlesWHERE type = business)比较使用EXISTS和=ANY 的查询本示例显示查找与出版商住在同一城市中的作者的两种查询方法:第一种方法使用 =ANY,第二种方法使用 EXISTS。注意这两 种方法返回相同的信息。复制代码代码如下:SELECT au_lname, au_fnameFROM authorsWHERE exists(SELECT *FROM publishersWHERE authors.city = publishers

5、.city)复制代码代码如下:SELECT au_lname, au_fnameFROM authorsWHERE city = ANY(SELECT cityFROM publishers)比较使用EXISTS和IN的查询本示例所示查询查找由位于以字母B开头的城市中的任一出版商出版的书名:复制代码代码如下:SELECT titleFROM titlesWHERE EXISTS(SELECT *FROM publishersWHERE pub_id = titles.pub_idAND city LIKE B%)复制代码代码如下:SELECT titleFROM titlesWHERE pub

6、_id IN(SELECT pub_idFROM publishersWHERE city LIKE B%)使用 NOT EXISTSNOT EXISTS的作用与EXISTS正相反。如果子查询没有返回 行,则满足 NOT EXISTS中的 WHERE子句。本示例查找不出版 商业书籍的出版商的名称:复制代码代码如下:SELECT pub_nameFROM publishersWHERE NOT EXISTS(SELECT *FROM titlesWHERE pub_id = publishers.pub_idAND type = business)ORDER BY pub_name又比如以下SQ

7、L语句:复制代码代码如下:select distinct 姓名 from xswhere not exists (select * from kcwhere not exists (select * from xs_kcwhere 学号=xs.学号 and 课程号=kc.课程号)把最外层的查询xs里的数据一行一行的做里层的子查询。中间的exists语句只做出对上一层的返回true或false ,因为查询的条件都在where学号=xs.学号and课程号=kc.课程号这句话里。每一个exists都会有一行值。它只是告诉一层,最外层 的查询条件在这里成立或都不成立,返回的时候值也一样回返回上去。直到最高层的时候如果是 true (真)就返回到结果集。为false (假)丢弃。复制代码代码如下:where not existsselect * from xs_kcwhere 学号=xs.学号 and 课程号=kc.课程号这个exists就是告诉上一层,这一行语句在我这里不成立。因 为他不是最高层,所以还要继续向上返回。select distinct 姓名 from xs where not exists(这里的exists语句收到上一个为false的值。他在判断一下,结果就是为 true (成立),由于是最高层所以就会把这行的结果(这里指的是查 询条件)返回到结果集。 6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1