子查询和组合查询
2016-01-15 18:45
232 查看
1.子查询–嵌套在主查询中的查询。
SELECT
ColumnA, (子查询) AS
ColumnB FROM
表名;
2.子查询嵌套位置
–SELECT中嵌套
–FROM 中嵌套
–WHERE中嵌套
–GROUP BY中嵌套
–HAVING中嵌套
–ORDER BY中嵌套
3.在SELECT中嵌套
SELECT
列1, (子查询) AS
别名 FROM
表名
4.在FROM中嵌套
SELECT
列1,列2 FROM (子查询)
AS 别名
5.在WHERE中嵌套
SELECT
列1,列2 FROM
表 WHERE
列=(子查询)
–在WHERE中嵌套的子查询根据不同的运算符有不同的分类:
•比较运算符(>、<、=、>=、<=、!=)
•in 和notin运算符
•子查询运算符(ALL、ANY、 EXISTS)
6.在WHERE中嵌套
–ALL运算符
•和子查询的结果逐一比较,必须全部满足时表达式的值才为真。
–ANY运算符
•和子查询的结果逐一比较,其中一条记录满足条件则表达式的值就为真。
–EXISTS/NOT EXISTS运算符
•EXISTS判断子查询是否存在数据,如果存在则表达式为真,反之为假。NOT EXISTS相反。
7.•在GROUP BY 中嵌套
–GROUP BY中嵌套和SELECT中嵌套类似,要求子查询只能返回单行单列值。
•在HAVING中嵌套
–HAVING中嵌套子查询和WHERE中嵌套子查询类似,只是能用到聚合函数。
•在ORDER BY 中嵌套
–ORDER BY中嵌套子查询和SELECT中嵌套子查询类似,要求子查询只能返回单行单列值。
8.•子查询分类
–相关子查询
•执行依赖于外部查询的数据。
•外部查询返回一行,子查询就执行一次。
–非相关子查询
•独立于外部查询的子查询。
•子查询总共执行一次,执行完毕后后将值传递给外部查询。
相关子查询通常要消耗更长的执行时间,当数据量增加时,执行时间会急剧增加
9.组合查询
–UNION是一种联合两条或以上查询的运算符,类似多条查询结果相组合的效果。
SELECT
列1 ,
列2
FROM 表1
UNION
SELECT
列3 ,
列4 FROM
表2;
–UNION 的结果集列名与 UNION 运算符中第一个 SELECT 语句的结果集中的列名相同。另一个 SELECT 语句的结果集列名将被忽略。
10.•使用UNION ALL运算符
–UNION ALL会保留重复行
•使用UNION ALL运算符
–UNION ALL会保留重复行
SELECT
ColumnA, (子查询) AS
ColumnB FROM
表名;
2.子查询嵌套位置
–SELECT中嵌套
–FROM 中嵌套
–WHERE中嵌套
–GROUP BY中嵌套
–HAVING中嵌套
–ORDER BY中嵌套
3.在SELECT中嵌套
SELECT
列1, (子查询) AS
别名 FROM
表名
4.在FROM中嵌套
SELECT
列1,列2 FROM (子查询)
AS 别名
5.在WHERE中嵌套
SELECT
列1,列2 FROM
表 WHERE
列=(子查询)
–在WHERE中嵌套的子查询根据不同的运算符有不同的分类:
•比较运算符(>、<、=、>=、<=、!=)
•in 和notin运算符
•子查询运算符(ALL、ANY、 EXISTS)
6.在WHERE中嵌套
–ALL运算符
•和子查询的结果逐一比较,必须全部满足时表达式的值才为真。
–ANY运算符
•和子查询的结果逐一比较,其中一条记录满足条件则表达式的值就为真。
–EXISTS/NOT EXISTS运算符
•EXISTS判断子查询是否存在数据,如果存在则表达式为真,反之为假。NOT EXISTS相反。
7.•在GROUP BY 中嵌套
–GROUP BY中嵌套和SELECT中嵌套类似,要求子查询只能返回单行单列值。
•在HAVING中嵌套
–HAVING中嵌套子查询和WHERE中嵌套子查询类似,只是能用到聚合函数。
•在ORDER BY 中嵌套
–ORDER BY中嵌套子查询和SELECT中嵌套子查询类似,要求子查询只能返回单行单列值。
8.•子查询分类
–相关子查询
•执行依赖于外部查询的数据。
•外部查询返回一行,子查询就执行一次。
–非相关子查询
•独立于外部查询的子查询。
•子查询总共执行一次,执行完毕后后将值传递给外部查询。
相关子查询通常要消耗更长的执行时间,当数据量增加时,执行时间会急剧增加
9.组合查询
–UNION是一种联合两条或以上查询的运算符,类似多条查询结果相组合的效果。
SELECT
列1 ,
列2
FROM 表1
UNION
SELECT
列3 ,
列4 FROM
表2;
–UNION 的结果集列名与 UNION 运算符中第一个 SELECT 语句的结果集中的列名相同。另一个 SELECT 语句的结果集列名将被忽略。
10.•使用UNION ALL运算符
–UNION ALL会保留重复行
•使用UNION ALL运算符
–UNION ALL会保留重复行
相关文章推荐
- 数据库之联接
- SSH——Hibernate初学者之旅(二)
- Concurrency3
- CentOS 6.5系统服务详解( 转)
- Textfield根据条件显示提示框-LHInfoTextfield(0.1.0)
- hive分组排序 取top N
- hive分组排序 取top N
- 基数和偶数分离
- .NET中提升UAC权限的方法总结
- 数据库之组合查询
- windows相关小知识
- Android 从输入法 到 EditText 研究
- mysql常见错误码
- Linux Bash算数运算方法小结
- Java提高学习之Object(3)
- python中的时间函数编写
- Android GPU加速渲染自定义View 性能改善<13>
- Atitit.java jna 调用c++ dll 的总结
- 第一次写python爬虫
- 协议和委托的各种用法