常用的多表查询
a表(id,name)
b表(id,age)

一、横向合并
添加到同一行中,列数增多
1. 内联
方法一:用where(带条件)连接两表
select *
from a,b
where
a.id = b.id
方法二:用inner join 表名 on(带条件)连接两表
select *
from a
inner join b
on a.id = b.id

2. 左联
左联,顾名思义,以左表为主,右表为辅。(查询出来的行数为左表的行数)
即左表的数据全部查出来,右表的数据拼上去。
(先把a表的数值全部查出来)
(b表中,缺少数值时为空,如b表中id为2的这条数据(id,age)数值为空)
(b表中,多余的数值没有查出来,如b表中没有id为3的这条数据(id,age)没有查出来)
select *
from a
left join b
on a.id = b.id

3. 右联
同理,右联,以右表为主,左表为辅。(查询出来的行数为右表的行数)
即右表的数据全部查出来,左表的数据拼上去。
(先把b表的数值全部查出来)
(a表中,缺少数值时为空,如a表中id为2的这条数据(id,age)数值为空)
(a表中,多余的数值没有查出来,如a表中没有id为3的这条数据(id,age)没有查出来)
select *
from a
right join b
on a.id = b.id

二、纵向合拼
添加到同一列中,行数增多
使用union all来拼接(行数增加)(查询出来的字段要相同,如:编号,名字或年龄)
select id as 编号, name as 名字或年龄 from a
union all
select id as 编号, age as 名字或年龄 from b

三、笛卡尔积
SQL语句上就是不加上其他的条件,直接把多张表拼起来
总的行数为a表的条数乘上b表的条数(2*2)
a表的每一条数据都与b表的每一条数据组合一次
(如查询出来的结构中,小光有18和19两个年龄,小丽也有18和19两个年龄)
select * from a,b


本文详细介绍了SQL中的多表查询,包括内联、左联、右联三种方式,以及如何进行横向和纵向合并。横向合并通过内联、左联和右联将不同表的数据合并到同一行,而纵向合并则利用`UNION ALL`将数据添加到同一列,行数增多。此外,还提到了笛卡尔积的概念,展示了当无条件连接多表时可能出现的大量组合结果。

2955

被折叠的 条评论
为什么被折叠?



