当前位置:  数据库>sqlserver

SQL嵌套查询示例解析

    来源: 互联网  发布时间:2014-08-29

    本文导语:  在SELECT查询语句中嵌入SELECT查询语句,称为嵌套查询。 内嵌的SELECT语句也可以称为孒查询,子查询形成的结果又成为父查询的条件。 子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。 子查询中不能有O...

在SELECT查询语句中嵌入SELECT查询语句,称为嵌套查询。

内嵌的SELECT语句也可以称为孒查询,子查询形成的结果又成为父查询的条件。
子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。

子查询中不能有ORDER BY分组语句。

子查询又可分为不相关子查询(子查询中的查询条件不依赖父查询)和相关子查询(子查询中的查询条件依赖父查询)

一、带有IN谓词的子查询
1、IN后面跟的是集合
 

代码示例:
select name
from student
where sid in (select sid from sc where cid=2)

2、有些查询也可以用自连接或多表连接来完成

二、带有比较运算符的子查询
1、当用户确切知道内层查询返回的是单值时,可以用,=,!等比较运算符。且子查询一定要在比较运算符之后

三、带有ANY(SOME)或ALL谓词的子查询
1、子查询返回单值时用比较运算符,但返回多值时要用ANY(SOME)或ALL谓词修饰。二是用ANY或ALL谓词时必须使用比较运算符。
2、也可以用聚集函数来代替。用聚集函数实现子查询通常比直接用ANY或ALL查询效率要高

四、带有EXISTS谓词的子查询
1、EXISTS代表量词存在。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真true或逻辑假false
 

代码示例:
select name
from student
where exists(select * from sc where sid=student.sid and cid=2)
 

2、由EXISTS引出的子查询、其目标列表达式通常用*,因为带EXISTS的子查询只返回真或假,给出列名无实际意义
3、与EXISTS对应的是NOT EXISTS,子查询为空时真,不为空时假
4、带有IN、比较运算符、ANY、和ALL谓词的子查询都能用带EXISTS谓词子查询代替,反过来则不然
5、由于带EXISTS的子查询只关心内层查询是否有值,并不需要具体值,因此其效率并不一定低于不相关子查询,有时高效的方法


    
 
 

您可能感兴趣的文章:

  • sql语句中单引号嵌套问题(一定要避免直接嵌套)
  • SQL集合嵌套查询的三个例子
  • 关于SQL嵌套的误解分析
  • 请问高手:sun下如何编译informix的C++,也就是嵌套sql的c++,急呀
  • sql server中嵌套游标的例子
  • SQL中嵌套SELECT 语句用法示例
  • SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”
  • SQL嵌套查询实例代码
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 拼接SQL字符串方法示例
  • sql 行转列示例代码
  • sql中count或sum为条件的查询示例(sql查询count)
  • sql 取代游标的写法示例
  • sql使用cast进行数据类型转换示例
  • sql 语句插入结果为select和值混合示例
  • sql2005统计技巧示例
  • sql函数实现递归查询示例
  • sql递归函数示例
  • java实现简单的给sql语句赋值的示例
  • sql多表行转列、级联行转列示例代码
  • sql级联删除与级联更新方法示例
  • t-sql清空表数据的两种方式示例(truncate and delete)
  • sql server 临时表的删除示例
  • php导入SQL文件(示例代码)
  • SQL 分布式查询、插入递增列示例
  • sql四舍五入函数示例
  • sql带分隔符的截取字符串示例
  • sql2005 存储过程分页示例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle SQL解析步骤小结
  • MySQL的SQL语法解析器 DBIx-MyParse
  • SQL解析类库 SQLJEP
  • 解析MYSQL 数据库导入SQL 文件出现乱码的问题
  • Oracle中DBMS_SQL解析SQL语句的流程
  • sql语句not and or执行顺序(实例解析)
  • 解析:清除SQL被注入恶意病毒代码的语句
  • 解析关于SQL语句Count的一点细节
  • 解析PL/SQL Developer导入导出数据库的方法以及说明
  • SQL分组查询实例解析
  • SQL_Server全文索引的用法解析
  • 解析sql语句中left_join、inner_join中的on与where的区别
  • 解析sql中得到刚刚插入的数据的id
  • 解析如何用SQL语句在指定字段前面插入新的字段
  • 解析Oracle查询和删除JOB的SQL
  • T-SQL 查询语句的执行顺序解析
  • 解析SQL语句中Replace INTO与INSERT INTO的不同之处
  • sql语句中like的用法详细解析
  • sql 表变量与临时表的实例解析
  • SQL Server 存储过程解析
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3