标签:char shu 排序 比较 查询 ble select 直接 str
名字 | 内连接 | 左连接 | 右连接 | 全连接 |
关键字 | inner join | left join | right join | union |
定义:内连接中必须两者相互匹配才能打印该行,看下面实例
create table A ( id int, name char(10) ); create table B ( id int, sname char(10) ); insert into A(id,name) value(1,"zhangsan"),(2,"lisi"),(3,"wangwu"); insert into B(id,sname) value(2,"laoliu"),(3,"louqi"),(4,"shuaisih"); select * from A inner join B on A.id = B.id; //这里的意思是如果A的id和B的id匹配则打印,这里只有2和3他们是共有的,也相当于打印他们的交集。id的交集。
定义:左连接中左表为驱动表,右表为匹配表。右表会全部打印,而左表只打印和右表匹配到的项,如果没有则为空
表A数据 id name ps 1 张三 经理 2 李四 董事 3 王五 主管 表B数据 id money 1 20000 2 1000000 select * from A left join B on A.id = B.id; 匹配结果是 id name ps id money 1 张三 经理 1 20000 2 李四 董事 2 1000000 3 王五 主管 null null
定义:和左连接相反,右表为驱动表,左表为匹配表,右表全部打印,左表匹配打印
表A数据 id name ps 1 张三 经理 2 李四 董事 3 王五 主管 表B数据 id money 1 20000 2 1000000 select * from A right join B on A.id = B.id; 匹配结果是 id name ps id money 1 张三 经理 1 20000 2 李四 董事 2 1000000 /这里比上面少了一行,因为左表只有2行数据,所以只打印两行数据
关键字:union/union all
语句:(select column,column2 .... from tableA) UNION (select colum1,column2 ... from tableB) 或者
(select column,column2 .... from tableA) UNION (select colum1,column2 ... from tableB)
注意:1、通过union连接的sql他们分别单独取出的列数必须相同
2、不要求合并的表列名称相同时,以第一个sql表列为准
3、使用union时,完全相同的行,将会被合并,由于合并比较耗时,一般不直接使用union进行合并,而是通常采用union all进行合并
4、被union连接的sql子句,单个子句中不要写order by ,因为不会有排序效果,但可以对最终的结果集进行排序
(select id ,name from A order by id ) union all (select id ,name from B order by id); //没有排序效果
(select id ,name from A)UNION ALL (select id ,name from B) order by id ; //有排序效果
表A数据 id num a 5 b 10 c 15 d 10 表B数据 id num b 5 c 15 d 20 e 99
(select * from A) UNION (select * from B); //查询结果 id num a 5 b 10 c 15 d 10 b 5
d 20
e 99
//这里的查询结果把多余的重复的B中的C给删除了
(select * from A) UNION ALL (select * from B);
//查询结果
id num
a 5
b 10
c 15
d 10
b 5
c 15
d 20
e 99
//这里就没有去重
参考链接:https://blog.csdn.net/zjt980452483/article/details/82945663
标签:char shu 排序 比较 查询 ble select 直接 str
原文地址:https://www.cnblogs.com/cheneyboon/p/11371070.html