我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL Server中怎么实现子查询

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL Server中怎么实现子查询

这篇文章将为大家详细讲解有关SQL Server中怎么实现子查询,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、子查询概念介绍

子查询可以嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询语句中的查询,子查询一般作为查询中间结果集角色,子查询也称为内部查询或内部选择,包含子查询的语句称为外部查询或外部选择。根据可用系统内存和查询中其他表达式的复杂程度的不同,嵌套限制也有所不同,一般可以支持嵌套32层。个人建议尽量避免多层嵌套这样SQL语句的可读性和可维护性都会很差。使用表达式的地方一般都可以使用子查询。

2、子查询分类

单值子查询:子查询的返回值属于单个。常见与查询列、单值的查询条件使用。

多值子查询:子查询的返回值多个。常见in、exists等筛选语句使用。

3、子查询的使用场景

3.1 选择列表中使用子查询

选择列表中使用子查询作为查询结果一列值出现的。该情况下调用子查询返回的只能是单值。只能是单值子查询。

-- 查询学生姓名、年龄、总成绩  select a.username,a.age,(select sum(score)  from Score where userId=a.userId)) totalScorefrom UserInfo a

3.2 作为查询条件

-- 查询部门名称是技术部的员工信息 单值查询 select username,age,address from Emp where deptno=(select top 1 deptno  from DeptInfo where depName='技术部'); -- 查询产品库存大于10吨的产品列表 多值查询 select name,code from ProductInfo where Code in (select s.code from StockInfo s where qty>20); 同样的insert、update、delete用法比较类似比如: -- 删除库存量为0的产品 delete from ProductInfo where Code in (select s.code from StockInfo s where qty=0); -- 更新库存量为0的产品remark字段更新为标记 update ProductInfo set remark='标记' where Code in (select s.code from StockInfo s where qty=0)

4、子查询和连接查询的关系

很多包含子查询的SQL语句都可以改成连接查询的形式表示,包含子查询的语句和语义上等效的无子查询的语句性能差别不大。但针对检查存在性的情况中,联接查询性能更好,数据量越大联接查询会更能体现效率。

比如:

-- 查询学生姓名、年龄、总成绩 select min(a.username),min(a.age),sum(score) totalScore from UserInfo a  left join Score b on a.userId=b.userId

5、包含in和exists子查询区别

in子查询:结果是包含0个或者多个值的列表,表示值的等于关系。

exists子查询:它只返回true或false。表示一种存在的行为。

通常情况下in和exist可以互换。

当子查询结果不存在NULL值时,not in和not exists得到的查询结果一样,所生成的查询计划也一样。

当in里面的值为null的情况下查询记录为0;当exists里面的值为null情况下相当于查询条件不起作用。

示例:

select name,age UserInfo where userId in (1,2,3,4); select name,age UserInfo where exists (1,2,3,4);

说明:EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,但要看实际情况具体使用:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

6、包含比较运算符的子查询

子查询可以由一个比较运算符(=、<>、>、>=、<、!>、!<或<=)引入。使用比较运算符引入的子查询必须返回单个值而不能一个值列表。否则,SQL  Server将显示一条错误信息。

关于SQL Server中怎么实现子查询就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL Server中怎么实现子查询

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql子查询怎么实现

实现 sql 子查询的步骤:确定子查询的目的:检索所需数据。编写子查询:使用 select 语句检索列和筛选条件。嵌入子查询:将子查询括在主查询中作为条件或运算符。连接子查询:使用关系运算符连接子查询和主查询的列或条件。执行查询:检索数据。
sql子查询怎么实现
2024-06-03

如何在SQL Server数据库中实现子查询

本篇文章给大家分享的是有关如何在SQL Server数据库中实现子查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1 子查询子查询是一个嵌套在select、insert、up
2023-06-14

SQL Server子查询的规则是什么

这篇文章主要介绍“SQL Server子查询的规则是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SQL Server子查询的规则是什么”文章能帮助大家解决问题。一、子查询基础知识子查询是嵌套在
2023-04-21

SQL Server数据库连接查询和子查询实战案例

子查询(嵌套查询)子查询也称嵌套查询,是指一个SELECT查询语句可以嵌入另一个SELECT查询语句之中,下面这篇文章主要给大家介绍了关于SQL Server数据库连接查询和子查询的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
2023-05-16

怎么在SQL Server中实现一个模糊查询功能

怎么在SQL Server中实现一个模糊查询功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.用_通配符查询"_"号表示任意单个字符,该字符号只能匹配一个字
2023-06-14

SQL子查询怎么使用

这篇“SQL子查询怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL子查询怎么使用”文章吧。SQL子查询或称为内部
2023-06-27

编程热搜

目录