1 .准备两块表
表a
表b
2 .进行连接查询测试:
(1)交叉连接(笛卡尔乘积) ) ) )。
SELECT * FROM a和b
)2)内部连接
显示内部连接
SELECT a.*,b.* fromainnerjoinbona.age=b.ageb
显示内部连接过滤条件:
SELECT a.*,b.* fromainnerjoinbona.age=b.agebhavinga.age=11
舒适的网络连接:
SELECT * FROM a,b WHERE a.age=b.ageB
的网络内连接筛选结果:
SELECT * FROM a,bwherea.age=b.agebhavinga.age=11
)3)左外部连接:
SELECT a.*,b.* fromaleftjoinbona.age=b.ageb
)4)右外连接:
SELECT a.*,b.* fromarightjoinbona.age=b.ageb
3.Union和unionall
(1) union:消除重复元素
选择* from a
UNION
选择*从b
总结:
union:联合的意思是结合两次以上的查询结果。
要求:两次查询的列数必须一致
推荐:列的类型可以不同,但对于每个查询列,建议您使用相同的类型
来自多个表的数据:在多次sql语句中检索到的列名可以不匹配,这取决于第一条sql语句的列名。
如果从不同语句检索到的行具有完全相同的值,union将合并同一行,最终只保留一行。 这样,union会删除重复的行。
如果不想删除重复的行,请使用union all。
如果子句中有order by,limit,则必须将其括在括号()中。 建议放在所有子句之后。 这意味着对最终合并的结果进行排序或筛选。
) union all保存着重复的要素
UNION ALL和UNION命令大部分相同,但UNION ALL命令列出所有值。
选择* from a
全部合并
选择*从b
总结:
UNION用于组合两个或多个SELECT语句的结果集,并清除表中的所有重复行。
UNION内部的SELECT语句必须具有相同数量的列,列也必须具有相同的数据类型。
此外,每个SELECT语句的列顺序必须相同。
缺省情况下,UNION操作符选择不同的值。 如果允许重复的值,请使用UNION ALL。
如果ALL与UNION一起使用,即UNION ALL,则不会删除重复行
注意:
1、UNION结果集中的列名始终等于第一个SELECT语句中的列名
2、UNION内部的SELECT语句必须具有相同数量的列。 列也需要类似的数据类型。 此外,每个SELECT语句的列顺序必须相同
原文: http://www.cn blogs.com/qlqwjy/p/7837529.html