多表查询(下)
一. 联合查询
联合查询:将多次查询结果合并,形成新的查询结果集
select {字段列表} from {表A} ...
union [all]
select {字段列表} from {表B} ...;
-
union all 会显示重复的部分,union 会去重,重复的部分只显示一次。
-
联合查询的多张表的列数必须保持一致,字段类型也要保持一致。
二. 子查询
概念:在SQL语句中嵌套使用select语句,称为嵌套查询,也称为子查询。
- 语法举例:
select * from tb1 where column1 = (select column1 from tb2);
- 子查询外部的语句可以是 insert/update/delete/select 的任何一个。
- 根据子查询结果不同,可分类为:
- 标量子查询:子查询的结果为单个值
- 列子查询:子查询结果为一列
- 行子查询:子查询结果为一行
- 表子查询:子查询结果为多行多列
- 前一条中的返回结果指的是语法后面括号内的返回结果。
- 根据子查询位置,可分类为:where之后、from之后、select之后。
1. 标量子查询
标量子查询:返回结果是单个值(数字、字符串、日期等)。
- 常用操作符:= / <> / >= / < / <=
2. 列子查询
列子查询:子查询结果为一列(可以是多行)
- 常用操作符: in / not in / any / some / all
3. 行子查询
行子查询:子查询结果为一行(可以是多列)
- 常用操作符:**= / <> / in / not in **
4. 表子查询
表子查询:子查询结果为多行多列
- 常用操作符:in