SQL循序渐进(22)EXISTS 和 ALL

EXISTS 和 ALL

EXISTS使用了一个子查询作为条件,只有当子查询返回行的时候这个条件才为真,如果子查询不返回任何的行条件就为假。如果商店在处理Chair的时候,有个顾客想看看所有拥有者的列表,就可以使用EXSIST,语句如下:

SELECT OWNERFIRSTNAME, OWNERLASTNAME

FROM ANTIQUEOWNERS

WHERE EXISTS

(SELECT *

FROM ANTIQUES

WHERE ITEM = 'Chair');

如果在Antiques列中有Chair,那么子查询就会返回一行或者多行,就使得EXISTS子句为真,然后让SQL列出拥有者来。如果没有搜索到Chair,则没有行被返回,条件就为假。

ALL是另外一个不寻常的关键字,因为ALL查询通常可以用不同的方法来进行,并且可能是一种更为简单的方法。举个例子来说明吧:

SELECT BUYERID, ITEM

FROM ANTIQUES

WHERE PRICE >= ALL

(SELECT PRICE

FROM ANTIQUES);

上面这条语句将返回最高价格的Item以及它的买方。子查询返回了Antiques表中的所有的Price列,而外层的查询逐行查询Antiques表,并且如果它的Price大于等于(或者ALL)列中的Prices,它就会被列出,它就是最好价格的Item。这里必须使用">="的原因是最高价格的Item要等于列表中的最高价格,因为这个Item在Price列中。

时间: 2024-10-23 08:14:55

SQL循序渐进(22)EXISTS 和 ALL的相关文章

SQL循序渐进(目录)

教程提纲: SQL循序渐进(1)-------介绍SQL SQL循序渐进(2)-------表的基础知识 SQL循序渐进(3)-------数据检索 SQL循序渐进(4)-------创建表 SQL循序渐进(5)-------插入数据到表 SQL循序渐进(6)-------删除表 SQL循序渐进(7)-------更新记录 SQL循序渐进(8)-------删除记录 SQL循序渐进(9)-------SELECT语句 SQL循序渐进(10)------合计函数 SQL循序渐进(11)------

SQL点滴22—性能优化没有那么神秘

原文:SQL点滴22-性能优化没有那么神秘 经常听说SQL Server最难的部分是性能优化,不禁让人感到优化这个工作很神秘,这种事情只有高手才能做.很早的时候我在网上看到一位高手写的博客,介绍了SQL优化的问题,从这些内容来看,优化并不都是一些很复杂的问题,掌握了基本的知识之后也可以尝试优化自己的SQL程序,甚至是其他相关的程序.优化是一些工作积累之后的经验总结和代码意识,只要平时注意积累,你也可以做优化的工作.这一篇随笔是转载,不过我强烈推荐给所有对数据库优化有兴趣的博友,读了这一篇之后下一

sql-下面SQL语句 中 exists的用法

问题描述 下面SQL语句 中 exists的用法 下面2句SQL,我都知道是什么意思,一个用的是exists,一个用的是in. 可我就是不理解为什么exists用在这里,就可以呢? select Student.* from Student , SC where Student.S# = SC.S# and SC.C# = '01' and exists (Select 1 from SC SC_2 where SC_2.S# = SC.S# and SC_2.C# = '02') order

你真的会玩SQL吗?EXISTS和IN之间的区别

你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节点的方法 你真的会玩SQL吗?让人晕头转向的三值逻辑 你真的会玩SQL吗?EXISTS和IN之间的区别 你真的会玩SQL吗?无处不在的子查询 你真的会玩SQL吗?Case也疯狂 你真的会玩SQL吗?表表达式,排名函数 你真的会玩SQL吗?简单的 数据修改 你真的会玩SQL吗?你所不知道的 数据聚合

sql中 if exists的问题

问题描述 大神们好,我这边想写一个ifexists语句,如何不存在,那么走else,但是Diary_Date+Diary_Time是不存在在非A_Diary_Notes表中的.以下是代码,在这种情况下是可以运行的,但是如果换成A_Applicant表,这张表中没有Diary_Date列,那么应该走上面一条非else的语句,但是报错了消息207,级别16,状态1,第18行列名'Diary_Date'无效.消息207,级别16,状态1,第18行列名'Diary_Time'无效.消息207,级别16,

SQL Server-聚焦EXISTS AND IN性能分析(十六)

前言 前面我们学习了NOT EXISTS和NOT IN的比较,当然少不了EXISTS和IN的比较,所以本节我们来学习EXISTS和IN的比较,简短的内容,深入的理解,Always to review the basics. 初步探讨EXISTS和IN 我们创建表Table1并且取出前面创建BigTable表中的六条数据并插入其中,同时有一条数据重复,如下: CREATE TABLE Table1 (IntCol UNIQUEIDENTIFIER) Insert into Table1 (IntC

SQL循序渐进(24)嵌入SQL

嵌入SQL 为了更好的理解嵌入SQL,本节利用一个具体例子来说明.嵌入SQL允许程序连接数据库并且包括SQL代码到程序中,这样在程序中就可以对数据库进行使用.操作以及处理数据等等.以下是用C语言编写的使用嵌入SQL的例程,它将打印一个报告:这个程序必须在普通的编译之前先预编译SQL语句.嵌入SQL对于不同系统是不一样的,所以在不同的系统中对以下的程序稍作修改,特别是变量的声明以及过程记录等.在嵌入SQL时,考虑网络.数据库管理系统.操作系统是相当重要的. 以下是详细的代码: #include <

SQL循序渐进(23)UNION 和 外部连接

UNION 和 外部连接 有些时候,你可以想一起看多个查询的结果.组合它们的输出,你可以使用UNION关键字.为了合并以下两个查询的输出:显示所有买方的ID和已经有定货的顾客,你可以使用以下语句: SELECT BUYERID FROM ANTIQUEOWNERS UNION SELECT OWNERID FROM ORDERS; 这里要注意SQL要求SELECT的列表必须匹配,即列于数据类型匹配.在本例子中,BuyerID 和OwnerID都是相同的数据类型,同为Interger(整型).同时

SQL循序渐进(20)Aliases 、In以及子查询

Aliases .In以及子查询 在本节教程中,我们将要介绍Aliases. In以及子查询的用法.首先我们看一下一个查询语句,它搜索所有已经定货的顾客的LastName以及他们定什么货,语句如下: SELECT OWN.OWNERLASTNAME Last Name, ORD.ITEMDESIRED Item Ordered FROM ORDERS ORD, ANTIQUEOWNERS OWN WHERE ORD.OWNERID = OWN.OWNERID AND ORD.ITEMDESIRE