您的位置:首页 > 其它

子查询和组合查询

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会保留重复行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: