left join, right join, full join, join 测试

一、准备测试数据:

 

  • 创建数据
  • Create database test;

 

  • 应用数据库
  • use test;

 

  • 创建表a

 

create table a(
ID int not null,
Name varchar(32)
);

 

  • 创建表b
create table b(
DD int not null,
DM varchar(32)
);

  

insert a(ID, Name) values(1,'paul');

insert a(ID, Name) values(2,'jude');

insert a(ID, Name) values(3,'Tom');

  

mysql> select * from a;
+----+------+
| ID | Name |
+----+------+
|  1 | paul  |
|  2 | jude  |
|  3 | Tom   |
+----+------+
3 rows in set (0.00 sec)

 

insert b(DD,DM) values(1,'Retail');

insert b(DD,DM) values(2,'IVS');

insert b(DD,DM) values(3,'IT');

insert b(DD,DM) values(4,'HRD');

  

mysql> select * from b;
+----+--------+
| DD | DM     |
+----+--------+
|  1 | Retail |
|  2 | IVS    |
|  4 | IT     |
|  5 | HRD    |
+----+--------+
4 rows in set (0.00 sec)

 

二、测试数据

 

  • inner join

mysql> select a.id,a.name,b.dd,b.dm from a inner join b on a.id=b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  2 | jude |  2 | IVS    |
+----+------+----+--------+
2 rows in set (0.00 sec)

 

 

 

 

mysql> select a.id,a.name,b.dd,b.dm from a,b where a.id=b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  2 | jude |  2 | IVS    |
+----+------+----+--------+
2 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a inner join b on a.id>b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  3 | Tom  |  2 | IVS    |
+----+------+----+--------+
3 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a,b where a.id>b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  3 | Tom  |  2 | IVS    |
+----+------+----+--------+
3 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a inner join b on a.id>=b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  2 | jude |  2 | IVS    |
|  3 | Tom  |  2 | IVS    |
+----+------+----+--------+
5 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a,b where a.id>=b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  2 | jude |  2 | IVS    |
|  3 | Tom  |  2 | IVS    |
+----+------+----+--------+
5 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a inner join b on a.id<b.dd;
+----+------+----+------+
| id | name | dd | dm   |
+----+------+----+------+
|  1 | paul |  2 | IVS  |
|  1 | paul |  4 | IT   |
|  2 | jude |  4 | IT   |
|  3 | Tom  |  4 | IT   |
|  1 | paul |  5 | HRD  |
|  2 | jude |  5 | HRD  |
|  3 | Tom  |  5 | HRD  |
+----+------+----+------+
7 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a,b where a.id<b.dd;
+----+------+----+------+
| id | name | dd | dm   |
+----+------+----+------+
|  1 | paul |  2 | IVS  |
|  1 | paul |  4 | IT   |
|  2 | jude |  4 | IT   |
|  3 | Tom  |  4 | IT   |
|  1 | paul |  5 | HRD  |
|  2 | jude |  5 | HRD  |
|  3 | Tom  |  5 | HRD  |
+----+------+----+------+
7 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a inner join b on a.id<=b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  1 | paul |  2 | IVS    |
|  2 | jude |  2 | IVS    |
|  1 | paul |  4 | IT     |
|  2 | jude |  4 | IT     |
|  3 | Tom  |  4 | IT     |
|  1 | paul |  5 | HRD    |
|  2 | jude |  5 | HRD    |
|  3 | Tom  |  5 | HRD    |
+----+------+----+--------+
9 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a,b where a.id<=b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  1 | paul |  2 | IVS    |
|  2 | jude |  2 | IVS    |
|  1 | paul |  4 | IT     |
|  2 | jude |  4 | IT     |
|  3 | Tom  |  4 | IT     |
|  1 | paul |  5 | HRD    |
|  2 | jude |  5 | HRD    |
|  3 | Tom  |  5 | HRD    |
+----+------+----+--------+
9 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a inner join b on a.id<>b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  1 | paul |  2 | IVS    |
|  3 | Tom  |  2 | IVS    |
|  1 | paul |  4 | IT     |
|  2 | jude |  4 | IT     |
|  3 | Tom  |  4 | IT     |
|  1 | paul |  5 | HRD    |
|  2 | jude |  5 | HRD    |
|  3 | Tom  |  5 | HRD    |
+----+------+----+--------+
10 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a,b where a.id<>b.dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  1 | paul |  2 | IVS    |
|  3 | Tom  |  2 | IVS    |
|  1 | paul |  4 | IT     |
|  2 | jude |  4 | IT     |
|  3 | Tom  |  4 | IT     |
|  1 | paul |  5 | HRD    |
|  2 | jude |  5 | HRD    |
|  3 | Tom  |  5 | HRD    |
+----+------+----+--------+
10 rows in set (0.00 sec)

 

  • left join

 

mysql> select a.id,a.name,b.dd,b.dm from a left join b on a.id=b.dd;
+----+------+------+--------+
| id | name | dd   | dm     |
+----+------+------+--------+
|  1 | paul |    1 | Retail |
|  2 | jude |    2 | IVS    |
|  3 | Tom  | NULL | NULL   |
+----+------+------+--------+
3 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a left join b on a.id>b.dd;
+----+------+------+--------+
| id | name | dd   | dm     |
+----+------+------+--------+
|  1 | paul | NULL | NULL   |
|  2 | jude |    1 | Retail |
|  3 | Tom  |    1 | Retail |
|  3 | Tom  |    2 | IVS    |
+----+------+------+--------+
4 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a left join b on a.id>=b.dd;
+----+------+------+--------+
| id | name | dd   | dm     |
+----+------+------+--------+
|  1 | paul |    1 | Retail |
|  2 | jude |    1 | Retail |
|  2 | jude |    2 | IVS    |
|  3 | Tom  |    1 | Retail |
|  3 | Tom  |    2 | IVS    |
+----+------+------+--------+
5 rows in set (0.00 sec)

  

 

mysql> select a.id,a.name,b.dd,b.dm from a left join b on a.id<b.dd;
+----+------+------+------+
| id | name | dd   | dm   |
+----+------+------+------+
|  1 | paul |    2 | IVS  |
|  1 | paul |    4 | IT   |
|  1 | paul |    5 | HRD  |
|  2 | jude |    4 | IT   |
|  2 | jude |    5 | HRD  |
|  3 | Tom  |    4 | IT   |
|  3 | Tom  |    5 | HRD  |
+----+------+------+------+
7 rows in set (0.00 sec)

  

mysql> select a.id,a.name,b.dd,b.dm from a left join b on a.id<=b.dd;
+----+------+------+--------+
| id | name | dd   | dm     |
+----+------+------+--------+
|  1 | paul |    1 | Retail |
|  1 | paul |    2 | IVS    |
|  1 | paul |    4 | IT     |
|  1 | paul |    5 | HRD    |
|  2 | jude |    2 | IVS    |
|  2 | jude |    4 | IT     |
|  2 | jude |    5 | HRD    |
|  3 | Tom  |    4 | IT     |
|  3 | Tom  |    5 | HRD    |
+----+------+------+--------+
9 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a left join b on a.id<>b.dd;
+----+------+------+--------+
| id | name | dd   | dm     |
+----+------+------+--------+
|  1 | paul |    2 | IVS    |
|  1 | paul |    4 | IT     |
|  1 | paul |    5 | HRD    |
|  2 | jude |    1 | Retail |
|  2 | jude |    4 | IT     |
|  2 | jude |    5 | HRD    |
|  3 | Tom  |    1 | Retail |
|  3 | Tom  |    2 | IVS    |
|  3 | Tom  |    4 | IT     |
|  3 | Tom  |    5 | HRD    |
+----+------+------+--------+
10 rows in set (0.00 sec)

 

  • right join
mysql> select a.id,a.name,b.dd,b.dm from a right join b on a.id=b.dd;
+------+------+----+--------+
| id   | name | dd | dm     |
+------+------+----+--------+
|    1 | paul |  1 | Retail |
|    2 | jude |  2 | IVS    |
| NULL | NULL |  4 | IT     |
| NULL | NULL |  5 | HRD    |
+------+------+----+--------+
4 rows in set (0.00 sec)

 

 

mysql> select a.id,a.name,b.dd,b.dm from a right join b on a.id>b.dd;
+------+------+----+--------+
| id   | name | dd | dm     |
+------+------+----+--------+
|    2 | jude |  1 | Retail |
|    3 | Tom  |  1 | Retail |
|    3 | Tom  |  2 | IVS    |
| NULL | NULL |  4 | IT     |
| NULL | NULL |  5 | HRD    |
+------+------+----+--------+
5 rows in set (0.00 sec)

 

 

mysql> select a.id,a.name,b.dd,b.dm from a right join b on a.id>=b.dd;
+------+------+----+--------+
| id   | name | dd | dm     |
+------+------+----+--------+
|    1 | paul |  1 | Retail |
|    2 | jude |  1 | Retail |
|    3 | Tom  |  1 | Retail |
|    2 | jude |  2 | IVS    |
|    3 | Tom  |  2 | IVS    |
| NULL | NULL |  4 | IT     |
| NULL | NULL |  5 | HRD    |
+------+------+----+--------+
7 rows in set (0.00 sec)

 

 

mysql> select a.id,a.name,b.dd,b.dm from a right join b on a.id<b.dd;
+------+------+----+--------+
| id   | name | dd | dm     |
+------+------+----+--------+
| NULL | NULL |  1 | Retail |
|    1 | paul |  2 | IVS    |
|    1 | paul |  4 | IT     |
|    2 | jude |  4 | IT     |
|    3 | Tom  |  4 | IT     |
|    1 | paul |  5 | HRD    |
|    2 | jude |  5 | HRD    |
|    3 | Tom  |  5 | HRD    |
+------+------+----+--------+
8 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a right join b on a.id<=b.dd;
+------+------+----+--------+
| id   | name | dd | dm     |
+------+------+----+--------+
|    1 | paul |  1 | Retail |
|    1 | paul |  2 | IVS    |
|    2 | jude |  2 | IVS    |
|    1 | paul |  4 | IT     |
|    2 | jude |  4 | IT     |
|    3 | Tom  |  4 | IT     |
|    1 | paul |  5 | HRD    |
|    2 | jude |  5 | HRD    |
|    3 | Tom  |  5 | HRD    |
+------+------+----+--------+
9 rows in set (0.00 sec)

 

mysql> select a.id,a.name,b.dd,b.dm from a right join b on a.id<>b.dd;
+------+------+----+--------+
| id   | name | dd | dm     |
+------+------+----+--------+
|    2 | jude |  1 | Retail |
|    3 | Tom  |  1 | Retail |
|    1 | paul |  2 | IVS    |
|    3 | Tom  |  2 | IVS    |
|    1 | paul |  4 | IT     |
|    2 | jude |  4 | IT     |
|    3 | Tom  |  4 | IT     |
|    1 | paul |  5 | HRD    |
|    2 | jude |  5 | HRD    |
|    3 | Tom  |  5 | HRD    |
+------+------+----+--------+
10 rows in set (0.00 sec)

 

  •  full join

错误执行代码:

mysql> select a.name,b.dm from a full join b on a.id=b.dd;
ERROR 1054 (42S22): Unknown column 'a.name' in 'field list'

 

 

mysql> select id,name,dd,dm from a full join b on id=dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  2 | jude |  2 | IVS    |
+----+------+----+--------+
2 rows in set (0.00 sec)

 

mysql> select id,name,dd,dm from a full join b on id<dd;
+----+------+----+------+
| id | name | dd | dm   |
+----+------+----+------+
|  1 | paul |  2 | IVS  |
|  1 | paul |  4 | IT   |
|  2 | jude |  4 | IT   |
|  3 | Tom  |  4 | IT   |
|  1 | paul |  5 | HRD  |
|  2 | jude |  5 | HRD  |
|  3 | Tom  |  5 | HRD  |
+----+------+----+------+
7 rows in set (0.00 sec)

 

mysql> select id,name,dd,dm from a full join b on id<=dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  1 | paul |  2 | IVS    |
|  2 | jude |  2 | IVS    |
|  1 | paul |  4 | IT     |
|  2 | jude |  4 | IT     |
|  3 | Tom  |  4 | IT     |
|  1 | paul |  5 | HRD    |
|  2 | jude |  5 | HRD    |
|  3 | Tom  |  5 | HRD    |
+----+------+----+--------+
9 rows in set (0.00 sec)

 

mysql> select id,name,dd,dm from a full join b on id>dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  3 | Tom  |  2 | IVS    |
+----+------+----+--------+
3 rows in set (0.00 sec)

 

mysql> select id,name,dd,dm from a full join b on id>=dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  1 | paul |  1 | Retail |
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  2 | jude |  2 | IVS    |
|  3 | Tom  |  2 | IVS    |
+----+------+----+--------+
5 rows in set (0.00 sec)

 

mysql> select id,name,dd,dm from a full join b on id<>dd;
+----+------+----+--------+
| id | name | dd | dm     |
+----+------+----+--------+
|  2 | jude |  1 | Retail |
|  3 | Tom  |  1 | Retail |
|  1 | paul |  2 | IVS    |
|  3 | Tom  |  2 | IVS    |
|  1 | paul |  4 | IT     |
|  2 | jude |  4 | IT     |
|  3 | Tom  |  4 | IT     |
|  1 | paul |  5 | HRD    |
|  2 | jude |  5 | HRD    |
|  3 | Tom  |  5 | HRD    |
+----+------+----+--------+
10 rows in set (0.00 sec)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值