博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
相关子查询
阅读量:5878 次
发布时间:2019-06-19

本文共 876 字,大约阅读时间需要 2 分钟。

相关子查询是指引用了外部查询中出现的表的列的子查询。这就意味着子查询要依赖于外部查询,不能独立地调用它。在逻辑上,相关子查询会为每个外部行单独计算一次。这篇文章我想从以下两个方面进行总结。

1,一个相关子查询的简单例子

2,相关子查询和EXISTS谓词

一个相关子查询的简单例子

例如,以下查询会为每个客户返回其订单ID最大的订单。

SQL查询代码如下:

-- 相关子查询SELECT custid,orderid,orderdate,empid FROM Sales.Orders AS orders1WHERE orderid=     (SELECT MAX(orders2.orderid)     FROM Sales.Orders AS orders2     WHERE orders2.custid= orders1.custid);-- 这里引用了外部查询的custid字段

查询结果:

相关子查询和EXISTS谓词

相关子查询通常也和谓词EXISTS一起使用,对于EXISTS,它的输入是一个子查询,如果子查询能够返回任何行,那么它就返回TRUE,否则返回FALSE。

例如,以下查询语句返回下过订单的西班牙客户。

SQL查询代码:

-- 相关子查询和谓词EXISTSSELECT customers.custid,customers.companyname FROM Sales.Customers AS customersWHERE customers.country=N'Spain' AND EXISTS(SELECT * FROM Sales.Orders AS orders WHERE orders.custid= customers.custid);

查询结果:

使用谓词EXISTS的好处之一就是可以用类似英语的语言来直观地表达查询。而且,EXISTS谓词的另一个需要注意的方面是:与T-SQL中的大多数谓词不同,EXISTS谓词使用的是二值逻辑,而不是三值逻辑,也就是说,不知道查询是否有返回行的情况是不存在的。

转载地址:http://ufdix.baihongyu.com/

你可能感兴趣的文章
spring 在service中需要抛出异常才能自动回滚
查看>>
人脸数据库大全(包括人脸识别、关键点检测、表情识别,人脸姿态等等)
查看>>
iOS UITableView表视图滚动隐藏UINavigationController导航栏
查看>>
SDL如何嵌入到QT中?!
查看>>
$(document).ready()
查看>>
RunLoop总结:RunLoop的应用场景(四)
查看>>
8个很实用的在线工具来提高你的Web设计和开发能力
查看>>
P1026 统计单词个数
查看>>
AndroidStudio EventBus报错解决方法its super classes have no public methods with the @Subscribe...
查看>>
Python RGB 和HSV颜色相互转换
查看>>
mybatis分页练手
查看>>
.net数据库连接字符串加密
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
文件监控
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>