SQL 单行子查询 、多行子查询、单行函数、聚合函数 IN 、ANY 、SOME 、ALL

单行子查询
子查询结果是 一个列一行记录
select a,b,c
from table
where a >(select avg(xx) from table )
还支持这种写法,这种比较少见
select a,b,c
from table
where (a ,b)=(select xx,xxx from table where col=‘000’ )
多行子查询
子查询结果是 一个列多行记录
select a,b,c
from table
where a > [ some | any | ALL ](select avg(xx) from table group by col )

单行函数 VS 聚合函数

单行函数 可以嵌套 len,ROUND 等
聚合函数 不能对包含聚合或子查询的表达式执行聚合函数。
但 Oracle 数据库 支持聚合函数嵌套

IN、SOME 、ANY、ALL

In
等于列表中 任意一个
where xxx in (select distinct col from t)

some | any | all
some、any:需要和单行比较符一起使用,和子查询返回的某一个值比较
ALL: 需要和单行比较符,和子查询返回的所有值比较
some 、any 效果一样
where xxx [>=、<=、>、<] some | any | all (select distinct col from t)

你可能感兴趣的:(sql,数据库)