相关子查询
2014-08-03 15:38
106 查看
相关子查询是指引用了外部查询中出现的表的列的子查询。这就意味着子查询要依赖于外部查询,不能独立地调用它。在逻辑上,相关子查询会为每个外部行单独计算一次。这篇文章我想从以下两个方面进行总结。
1,一个相关子查询的简单例子
2,相关子查询和EXISTS谓词
SQL查询代码如下:
查询结果:
例如,以下查询语句返回下过订单的西班牙客户。
SQL查询代码:
查询结果:
使用谓词EXISTS的好处之一就是可以用类似英语的语言来直观地表达查询。而且,EXISTS谓词的另一个需要注意的方面是:与T-SQL中的大多数谓词不同,EXISTS谓词使用的是二值逻辑,而不是三值逻辑,也就是说,不知道查询是否有返回行的情况是不存在的。
1,一个相关子查询的简单例子
2,相关子查询和EXISTS谓词
一个相关子查询的简单例子
例如,以下查询会为每个客户返回其订单ID最大的订单。SQL查询代码如下:
-- 相关子查询 SELECT custid,orderid,orderdate,empid FROM Sales.Orders AS orders1 WHERE orderid= (SELECT MAX(orders2.orderid) FROM Sales.Orders AS orders2 WHERE orders2.custid= orders1.custid);-- 这里引用了外部查询的custid字段
查询结果:
相关子查询和EXISTS谓词
相关子查询通常也和谓词EXISTS一起使用,对于EXISTS,它的输入是一个子查询,如果子查询能够返回任何行,那么它就返回TRUE,否则返回FALSE。例如,以下查询语句返回下过订单的西班牙客户。
SQL查询代码:
-- 相关子查询和谓词EXISTS SELECT customers.custid,customers.companyname FROM Sales.Customers AS customers WHERE customers.country=N'Spain' AND EXISTS(SELECT * FROM Sales.Orders AS orders WHERE orders.custid= customers.custid);
查询结果:
使用谓词EXISTS的好处之一就是可以用类似英语的语言来直观地表达查询。而且,EXISTS谓词的另一个需要注意的方面是:与T-SQL中的大多数谓词不同,EXISTS谓词使用的是二值逻辑,而不是三值逻辑,也就是说,不知道查询是否有返回行的情况是不存在的。
相关文章推荐
- Google通用搜索中可能将不再显示SEO相关查询的本地搜索列表
- mongodb相关查询总结
- mongodb统计查询相关及csharp方面的应用收集
- 相关子查询中exists后select 加数字的理解
- SQL查询相关技术-3.更改显示报表行项目
- Oracle与时间相关的查询 & 修改系统时间格式
- 【mysql】SQL嵌套子查询和相关子查询的执行过程有什么区别(推荐)
- nagios数据库 主机相关信息查询
- SQL查询相关技术-8.SQL操作(设置条件)
- SOQL数据查询时对日期的相关处理操作。
- Oracle相关子查询和分级查询举例
- 服务器相关信息查询
- 从视图查询表分区的相关信息
- Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
- Correlated Subqueries 相关子查询
- redis cluster (2) 相关命令参考及慢查询
- android sqlite3 日期查询相关
- [每日一题] OCP1z0-047 :2013-08-08 相关子查询中EXISTS的使用.....................................28
- solr查询q的相关知识
- 相关子相关子查询和嵌套子查询 [SQL Server]