MySQL的 - RIGHT JOIN
时间:2020-02-23 14:41:03 来源:igfitidea点击:
在本教程中,我们将学习有关MySQL中正确连接的知识。
当我们使用RIGHT JOIN时,它将返回右侧表中的所有行,而仅返回左侧表中的匹配行。
如果左侧表中没有匹配项,那么我们将得到NULL。
RIGHT JOIN的图形表示如下。
在本教程中,我们将使用"员工"和"评论"表。
员工表
mysql> SELECT * FROM employee; +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ | employeeid | firstname | lastname | email | score | birthday | lastmodified | created | +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ | e01 | | | @example.com | 7 | 1900-01-01 | 2016-02-04 06:08:10 | 2016-01-01 01:01:01 | | e02 | John | Doe | [email protected] | 8 | 1900-02-03 | 2016-02-04 06:08:10 | 2016-01-01 01:01:04 | | e03 | Jane | Doe | [email protected] | 9 | 1900-05-20 | 2016-02-04 06:08:10 | 2016-01-01 01:01:04 | | e04 | Tin | Tin | [email protected] | 6 | 1900-10-20 | 2016-02-04 06:08:10 | 2016-01-01 01:02:03 | | e05 | Bob | Coder | [email protected] | 7 | 1900-08-20 | 2016-02-04 06:08:10 | 2016-01-01 01:02:10 | +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ 5 rows in set (0.00 sec)
评论表
mysql> SELECT * FROM comments; +-----------+------------+---------------------+---------------------+---------------------+ | commentid | employeeid | commentbody | lastmodified | created | +-----------+------------+---------------------+---------------------+---------------------+ | 1 | e03 | Awesome | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 | | 2 | e03 | Hello World | 2016-01-02 01:02:03 | 2016-01-02 01:02:03 | | 3 | e01 | Happy | 2016-01-02 01:04:03 | 2016-01-02 01:04:03 | | 4 | e04 | This is my comment. | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 | | 5 | e01 | Keep coding.... | 2016-04-04 03:02:01 | 2016-05-04 03:02:01 | +-----------+------------+---------------------+---------------------+---------------------+ 5 rows in set (0.00 sec)
RIGHT JOIN语法
SELECT tbl1.column_name, tbl2.column_name FROM table_1 tbl1 RIGHT JOIN table_2 tbl2 ON tbl1.column_X = tbl2.column_X;
RIGHT JOIN员工和评论表
在下面的示例中,我们将列出所有评论以及对其进行评论的员工。
因此,为此,我们将右连接" employeeid"列上的两个表。
这将获取两个表中具有匹配employeeid的所有行。
当执行RIGHT JOIN时,即使左侧表中没有匹配项,我们也会从右侧表中获取所有行。
mysql> SELECT e.employeeid, e.firstname, e.lastname, c.commentid, c.commentbody FROM employee e RIGHT JOIN comments c ON e.employeeid = c.employeeid ORDER BY employeeid;
+------------+-----------+----------+-----------+---------------------+ | employeeid | firstname | lastname | commentid | commentbody | +------------+-----------+----------+-----------+---------------------+ | e01 | | | 3 | Happy | | e01 | | | 5 | Keep coding.... | | e03 | Jane | Doe | 1 | Awesome | | e03 | Jane | Doe | 2 | Hello World | | e04 | Tin | Tin | 4 | This is my comment. | +------------+-----------+----------+-----------+---------------------+ 5 rows in set (0.00 sec)