MySQL学习笔记-多表查询(下)

  • Post category:MySQL

多表查询(下)

一. 联合查询

联合查询:将多次查询结果合并,形成新的查询结果集

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 的任何一个。
  • 根据子查询结果不同,可分类为:
    • 标量子查询:子查询的结果为单个值
    • 列子查询:子查询结果为一列
    • 行子查询:子查询结果为一行
    • 表子查询:子查询结果为多行多列
  • 前一条中的返回结果指的是语法后面括号内的返回结果。

image-20230302152554915

  • 根据子查询位置,可分类为:where之后、from之后、select之后。

1. 标量子查询

标量子查询:返回结果是单个值(数字、字符串、日期等)。

  • 常用操作符:= / <> / >= / < / <=

2. 列子查询

列子查询:子查询结果为一列(可以是多行)

  • 常用操作符: in / not in / any / some / all

image-20230302152929938

3. 行子查询

行子查询:子查询结果为一行(可以是多列)

  • 常用操作符:**= / <> / in / not in **

4. 表子查询

表子查询:子查询结果为多行多列

  • 常用操作符:in