嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,主查询。内层查询也称子查询,从查询。

  嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可以用于父查询select语句使用。还可以用于insert、update、delete语句或其他子查询中。

一、子查询的组成

  1、包含标准选择列表组件的标准select查询。

  2、包含一个或多个表或者视图名称的标准from子句。

  3、可选的where子句。

  4、可选的group by子句。

  5、可选的having子句。

二、子查询的语法规则

  1、子查询的select查询总是使用圆括号括起来。

  2、不能包括compute或for.browse子句。

  3、如果同时指定top子句,则可能只包括order by子句。

  4、子查询最多可以嵌套到32层。个别查询可能会不支持32层嵌套。

  5、任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。

  6、如果某个表只出现在子查询中二不出现在外部查询中,那么该表的列就无法包含在输出中。

三、简单子查询

  示例:

select name,age from person
where age >
(select age from person where name = '孙权'
)

   输出结果为:

   

四、in嵌套查询

   in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录。

   示例:

select name from person
where countryid in
(select countryid from countrywhere countryname = '魏国'
)

   输出结果为:

   

五、some嵌套查询

  1、语法

  some在sql中的逻辑运算符号,如果在一系列比较中,有些值为True,那么结果就为True。some的语法是:

  <表达式>{ =|<>|!=|>|>=|!>|<|<=|!<}some(子查询)  

  示例:

select name from person
where countryid = some       --用等号和以下查询到的值比较,如果与其中一个相等,就返回
(select countryid from countrywhere countryname = '魏国'
)

  输出结果为:

  

六、all嵌套查询

  all是sql中的逻辑运算符好,如果一系列的比较都为true,那么结果才能为true。

  1、语法

  <表达式>{ =|<>|!=|>|>=|!>|<|<=|!<}all(子查询)

  示例:

select name from person
where countryid > all   --当countryid大于以下返回的所有id,此结果才为True,此结果才返回
(select countryid from countrywhere countryname = '魏国'
)

  输出结果为:

  

七、exists嵌套查询

   1、语法

   exists是sql中的逻辑运算符号。如果子查询有结果集返回,那么就为True。exists代表“存在”的意义,它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找。

  exists 子查询        

   其中子查询是一个首先的select语句,不允许有compute子句和into关键字。

   exists 的意思是,子查询是否有结果集返回。
   例如:

SELECT * FROM Person
WHERE exists
(SELECT 1      --SELECT 0  SELECT NULL 返回结果都一样,因为这三个子查询都有结果集返回,因此总是True  SELECT * FROM Person照常执行
)

   但是如果子查询中因为加了条件而没有结果集返回,则主语句就不执行了:

SELECT * FROM Person
WHERE exists
(SELECT * FROM Person WHERE Person_Id = 100    --如果不存在Person_Id的记录,则子查询没有结果集返回,主语句不执行
)

SQL语句 - 嵌套查询相关推荐

  1. 二见钟情之SQL语句嵌套查询

    这次机房收费系统折腾了七八次,刚开始的时候是因为不会,现在再改是因为自己不够满意,总觉得还能做得更好一点,所以就推倒重来:然后又推倒,又重来,貌似有瘾一样,不过确实该快点了,不然等自己满意了就该过年了 ...

  2. SQL语句 - 嵌套查询(SQLServer)

    嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. ...

  3. 用SQL进行嵌套查询

    用SQL进行嵌套查询 在SELECT查询语句里可以嵌入SELECT查询语句,称为嵌套查询. 也可将内嵌的SELECT语句称为孒查询,子查询形成的结果又成为父查询的条件. 子查询可以嵌套多层,子查询操作 ...

  4. sql镶嵌查询_【SQL】嵌套查询与子查询

    前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...

  5. 如何在 Linux 上用 SQL 语句来查询 Apache 日志

    Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中 ...

  6. PHP获取MySQL执行sql语句的查询时间

    PHP获取MySQL执行sql语句的查询时间 1. $t1=microtime(true); mysql_query($sql); echo microtime(true)-$t1; 2. //计时开 ...

  7. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  8. java sql范围查询语句,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  9. Python与开源GIS:在OGR中使用SQL语句进行查询

    属性选择与空间选择都可以看作是OGR内置的选择功能,这两种功能可以解决大部分实际中的问题.但是也有这种时候,就是进行查询时的条件比较复杂.针对这种情况,OGR也提供了更加灵活的解决方案:支持使用SQL ...

最新文章

  1. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
  2. 第一阶段:Java基础之变量
  3. 【Hibernate】HibernateCallback总结
  4. Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】
  5. python学习笔记(二十)初识面向对象
  6. 【操作系统复习】进程的定义、组成、组织方式
  7. 计算机怎么远程桌面,电脑远程桌面如何连接 电脑远程桌面连接方法【详解】...
  8. 火车在提速,生活在加速,快节奏的生活让人们逐渐失去了驻足思考的能力,人们好像已经习惯抱团去做某一件事情,完全不顾这件事情到底适合不适合自己,我在想他们总...
  9. 20200216_re数据处理
  10. java 修饰词_Java线程和Java修饰词
  11. 数据库原理及应用教程(陈志泊主编)
  12. 完全卸载NI系列软件的方法
  13. TAOCP_READING 1.1完
  14. KDD 2022论文合集(持续更新中)
  15. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
  16. 【科学文献计量】中英文文献标题及摘要分词字数与频数统计与可视化
  17. 人工智能基础(高中版)教材补充和资源分享
  18. 电脑被锁解决方法5种方法解除开机密码
  19. 人在旅途——》张家界之旅:20180419
  20. 伏拉夫背景音乐计算机版,SONOS ZonePlayer 120

热门文章

  1. HADOOP常见错误
  2. 全面对比,深度解析 Ignite 与 Spark
  3. python函数(三)
  4. 2.选择元素 - 自定义过滤器《jquery实战》
  5. 解决com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3158064)问题
  6. 20110125 学习记录:在SQL Server 2005数据库中修改存储过程
  7. Silverlight测试——利用Ranorex实现数据驱动测试
  8. Leetcode 4.28 Tree Easy
  9. export 和export default不同的引入方式
  10. (转)IntelliJ Idea 的相关使用