SQL语句嵌套查询组成、语法规则、表达形式、简单嵌套查询、in嵌套查询
包含一个或多个子查询或者子查询的另一个术语的 SELECT 语句。
在一个SELECT 语句的WHERE 子句或HAVING 子句中嵌套另一个SELECT 语句的查询称为嵌套查询,又称子查询。子查询是SQL 语句的扩展。
子查询可以使用任何普通查询中使用的关键词:如DINSTINCT(去重),GROUP BY(分组),LIMIT(限制记录条数),ORDER BY(排序),UNION(联合去重),ALL,UNION ALL(联合不去重)等。可以使用<,>, <=, >=, =, <>运算符进行比较,也可以使用ANY ,IN和SOME进行集合的匹配。
嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可以用于父查询select语句使用。还可以用于insert、update、delete语句或其他子查询中。
1.组成(1)包含标准选择列表组件的标准select查询。
(2)包含一个或多个表或者视图名称的标准from子句。
(3)可选的where子句。
(4)可选的group by子句。
(5)可选的having子句。
2.语法规则(1)子查询的select查询总是使用圆括号括起来。
(2)不能包括compute或for.browse子句。
(3)如果同时指定top子句,则可能只包括orderby子句。
(4)子查询最多可以嵌套到32层。个别查询可能会不支持32层嵌套。
(5)任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。
(6)如果某个表只出现在子查询中二不出现在外部查询中,那么该表的列就无法包含在输出中。
3.表达形式SELECT <目标表达式1>[,...] FROM <表或视图名1> WHERE [表达式] (SELECT <目标表达式2>[,...] FROM <表或视图名2>) [GROUP BY <分组条件> HAVING [<表达式>比较运算符] (SELECT <目标表达式2>[,...] FROM <表或视图名2> )]
4.简单嵌套查询表结构:
示例:
select name,age from student where age>(select age from student where name='薇薇');
结果:
5.in嵌套查询in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录。
示例:
select name from student where id in (select id from student where department='计算机科学与技术');
结果:
6.some嵌套查询(和any等价)some在sql中的逻辑运算符号,如果在一系列比较中,有些值为True,那么结果就为True。
some的语法是:
<表达式>{=|<>|!=|>|>=|!>|<|<=|!<}some(子查询)
示例:
select name from student where age>some (select age from student where name='薇薇');
结果:
注:SQL中定量谓词不支持反操作,也就是说,不能在ANY或者SOME前加NOT关键字。但可以用“<>”号表示否定
7.all嵌套查询all是sql中的逻辑运算符号,如果一系列的比较都为true,那么结果才能为true。
all的语法是:
<表达式>{=|<>|!=|>|>=|!>|<|<=|!<}all(子查询)
示例:
select name from student where id>all (select id from student where name='灵思');
结果:
8.exists嵌套查询exists是sql中的逻辑运算符号。如果子查询有结果集返回,那么就为True。exists代表“存在”的意义,它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找,但是如果子查询中因为加了条件而没有结果集返回,则主语句就不执行了。
示例1:
select id,name from student where exists(select id from student where name='灵思');
结果:
示例2:
select id,name from student where exists(select id from student where name='俞静');
结果:
上一篇: js 返回上一页和刷新
下一篇: 自动弹出div菜单