mysql多表union_mySql多表连接查询与union与unionall⽤法1.准备两个表
表a
看书英语怎么写表b
2.进⾏连接查询测试:
(1)交叉连接(笛卡尔积)
SELECT * FROM a,b
(2)内连接
显⽰内连接
港澳通行证时间SELECT a.*,b.* FROM a INNER JOIN b ON a.age=b.ageB
显⽰内连接过滤条件:
SELECT a.*,b.* FROM a INNER JOIN b ON a.age=b.ageB HAVING a.age=11
去海边玩隐⼠内连接:
SELECT * FROM a,b WHERE a.age=b.ageB
乳腺增生的危害
隐⼠内连接筛选结果:豪宅纹
SELECT * FROM a,b WHERE a.age=b.ageB HAVING a.age=11
(3)左外连接:
SELECT a.*,b.* FROM a LEFT JOIN b ON a.age=b.ageB
(4)右外连接:
SELECT a.*,b.* FROM a RIGHT JOIN b ON a.age=b.ageB
3.Union 和 union all
(1) union: 去掉重复元素
SELECT * FROM a
UNION
SELECT * FROM b
总结:台一
union:联合的意思,即把两次或多次查询结果合并起来。
要求:两次查询的列数必须⼀致
推荐:列的类型可以不⼀样,但推荐查询的每⼀列,想对应的类型以⼀样
可以来⾃多张表的数据:多次sql语句取出的列名可以不⼀致,此时以第⼀个sql语句的列名为准。
如果不同的语句中取出的⾏,有完全相同(这⾥表⽰的是每个列的值都相同),那么union会将相同的⾏合并,最终只保留⼀⾏。也可以这样理解,union会去掉重复的⾏。
如果不想去掉重复的⾏,可以使⽤union all。
比例尺的意义如果⼦句中有order by,limit,需⽤括号()包起来。推荐放到所有⼦句之后,即对最终合并的结果来排序或筛选。
(2) union all 保留重复元素
UNION ALL 命令和 UNION 命令⼏乎是等效的,不过 UNION ALL 命令会列出所有的值。
SELECT * FROM a
UNION ALL
SELECT * FROM b
总结:
UNION ⽤于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复⾏。
UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同.
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使⽤ UNION ALL。
相约青春当 ALL 随 UNION ⼀起使⽤时(即 UNION ALL),不消除重复⾏
注意:
1、UNION 结果集中的列名总是等于第⼀个 SELECT 语句中的列名
2、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同