博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
left join,right join, inner join
阅读量:6480 次
发布时间:2019-06-23

本文共 3175 字,大约阅读时间需要 10 分钟。

hot3.png

-- ------------------------------ Table structure for `a`-- ----------------------------DROP TABLE IF EXISTS `a`;CREATE TABLE `a` (  `aID` int(1) NOT NULL AUTO_INCREMENT,  `aNum` char(20) DEFAULT NULL,  PRIMARY KEY (`aID`)) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;-- ------------------------------ Records of a-- ----------------------------INSERT INTO `a` VALUES ('1', 'a20050111');INSERT INTO `a` VALUES ('2', 'a20050112');INSERT INTO `a` VALUES ('3', 'a20050113');INSERT INTO `a` VALUES ('4', 'a20050114');INSERT INTO `a` VALUES ('5', 'a20050115');-- ------------------------------ Table structure for `b`-- ----------------------------DROP TABLE IF EXISTS `b`;CREATE TABLE `b` (  `bID` int(1) NOT NULL AUTO_INCREMENT,  `bName` char(20) DEFAULT NULL,  PRIMARY KEY (`bID`)) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;-- ------------------------------ Records of b-- ----------------------------INSERT INTO `b` VALUES ('1', ' 2006032401');INSERT INTO `b` VALUES ('2', '2006032402');INSERT INTO `b` VALUES ('3', '2006032403');INSERT INTO `b` VALUES ('4', '2006032404');INSERT INTO `b` VALUES ('8', '2006032408');

mysql> select * from a;+-----+-----------+| aID | aNum      |+-----+-----------+|   1 | a20050111 ||   2 | a20050112 ||   3 | a20050113 ||   4 | a20050114 ||   5 | a20050115 |+-----+-----------+5 rows in set

mysql> select * from b;+-----+-------------+| bID | bName       |+-----+-------------+|   1 |  2006032401 ||   2 | 2006032402  ||   3 | 2006032403  ||   4 | 2006032404  ||   8 | 2006032408  |+-----+-------------+5 rows in set

left join

 left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).B表记录不足的地方均为NULL.

mysql> SELECT * FROM a LEFT JOIN  b ON a.aID =b.bID;+-----+-----------+------+-------------+| aID | aNum      | bID  | bName       |+-----+-----------+------+-------------+|   1 | a20050111 |    1 |  2006032401 ||   2 | a20050112 |    2 | 2006032402  ||   3 | a20050113 |    3 | 2006032403  ||   4 | a20050114 |    4 | 2006032404  ||   5 | a20050115 | NULL | NULL        |+-----+-----------+------+-------------+5 rows in set

right join

和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充

mysql> SELECT  * FROM a RIGHT JOIN b ON a.aID = b.bID;+------+-----------+-----+-------------+| aID  | aNum      | bID | bName       |+------+-----------+-----+-------------+|    1 | a20050111 |   1 |  2006032401 ||    2 | a20050112 |   2 | 2006032402  ||    3 | a20050113 |   3 | 2006032403  ||    4 | a20050114 |   4 | 2006032404  || NULL | NULL      |   8 | 2006032408  |+------+-----------+-----+-------------+5 rows in set

inner join

相等联接或内联接,只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录

mysql> SELECT * FROM  a INNER JOIN  b ON a.aID =b.bID;+-----+-----------+-----+-------------+| aID | aNum      | bID | bName       |+-----+-----------+-----+-------------+|   1 | a20050111 |   1 |  2006032401 ||   2 | a20050112 |   2 | 2006032402  ||   3 | a20050113 |   3 | 2006032403  ||   4 | a20050114 |   4 | 2006032404  |+-----+-----------+-----+-------------+4 rows in set

等同于

SELECT *  FROM a,b WHERE a.aID = b.bID

转载于:https://my.oschina.net/hnuweiwei/blog/224101

你可能感兴趣的文章
少用数字来作为参数标识含义
查看>>
ScrollView中嵌套ListView
查看>>
Algs4-2.3.1如何切分数组
查看>>
观察者模式
查看>>
在properties.xml中定义变量,在application.xml中取值问题
查看>>
js 数组
查看>>
Linux scp命令详解
查看>>
cell reuse & disposebag
查看>>
【故障处理】ORA-12545: Connect failed because target host or object does not exist
查看>>
云时代,程序员将面临的分化
查看>>
js判断移动端是否安装某款app的多种方法
查看>>
学习angularjs的内置API函数
查看>>
4、输出名称 Exported names
查看>>
Pre-echo(预回声),瞬态信号检测与TNS
查看>>
【转载】如何发送和接收 Windows Phone 的 Raw 通知
查看>>
poj2378
查看>>
Java文件清单列表
查看>>
js url传值中文乱码之解决之道
查看>>
Trusty TEE
查看>>
[LeetCode] Reverse String 翻转字符串
查看>>