关键词

详解MySQL LEFT/RIGHT JOIN:外连接

MySQL的LEFT JOIN和RIGHT JOIN都是外连接(Outer Join)的一种形式,意味着即使没有匹配的行,也会返回从另一张表(左连接的情况是左表,右连接的情况是右表)中的所有行。

LEFT JOIN

左连接(LEFT JOIN)返回左表中的所有行,以及右表中的匹配行。如果右表中没有与左表中的行匹配的行,则返回NULL值。

语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

示例:

假设有两张表,一个是用户表(users),一个是评论表(comments),分别如下:

users表:

id name
1 John
2 Peter
3 Mary

comments表:

id comment user_id
1 Good 1
2 Great 1
3 Nice 3

查询用户表与评论表的LEFT JOIN结果:

SELECT users.name, comments.comment
FROM users
LEFT JOIN comments
ON users.id = comments.user_id;

输出结果:

name comment
John Good
John Great
Mary Nice
Peter NULL

输出结果中,左连接结果显示了users表的全部三行与comments表的匹配行,以及users表中Peter行没有comment匹配的NULL值。

RIGHT JOIN

右连接(RIGHT JOIN)返回右表中的所有行,以及左表中的匹配行。如果左表中没有与右表中的行匹配的行,则返回NULL值。

语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

示例:

与之前的例子类似,现在将查询语句中的LEFT JOIN换成RIGHT JOIN,来查询匹配用户表和评论表的右连接结果:

SELECT users.name, comments.comment
FROM users
RIGHT JOIN comments
ON users.id = comments.user_id;

输出结果:

name comment
John Good
John Great
Mary Nice
NULL Love

输出结果中,右连接结果显示了comments表的全部三行与users表的匹配行,以及comments表中Love行没有对应匹配的NULL值。

本文链接:http://task.lmcjl.com/news/17841.html

展开阅读全文