下面是两个原始数据表:
aid | title | content | uid |
---|---|---|---|
1 | 文章1 | 文章1正文内容... | 1 |
2 | 文章2 | 文章2正文内容... | 1 |
3 | 文章3 | 文章3正文内容... | 2 |
4 | 文章4 | 文章4正文内容... | 4 |
uid | username | |
---|---|---|
1 | admin | admin@520mg.com |
2 | 小明 | xiao@163.com |
3 | Jack | jack@gmail.com |
我们列出所有的用户,以及他们可能拥有的文章。
SELECT ... RIGHT JOIN ... ON 语句如下:
SELECT article.aid,article.title,user.username FROM article RIGHT JOIN user ON article.uid = user.uid
返回查询结果如下:
aid | title | username |
---|---|---|
1 | 文章1 | admin |
2 | 文章2 | admin |
3 | 文章3 | 小明 |
NULL | NULL | Jack |
对比 LEFT JOIN 返回的查询结果,RIGHT JOIN 返回的结果与其刚好“相反”。
在上面的例子中,对于左表中没有对应匹配的数据记录,其所有的列都被置为 NULL,因此要查询这部分记录(如在上面例子中体现为查找 username=Jack 这类无对应文章的所有用户),可以附加 IS NULL 条件:
SELECT article.aid,article.title,user.username FROM article LEFT JOIN user ON article.uid = user.uid WHERE article.aid IS NULL