下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
* JOIN: 如果表中有至少一个匹配,则返回行(注:join与inner join是相同的)
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
相当于直等于,有一行匹配就只返回匹配的那行,其他的都不返回。
* LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
左连接,是指左表为主表,主表返回所有的行,而右表只返回与左表匹配的行,左表没有关联上的就返回null。
* RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
右连接,是指右表为主表,主表返回所有的行,而左表只返回与右表匹配的行,右表没有关联上的就返回null。
* FULL JOIN: 只要其中一个表中存在匹配,就返回行
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
完全连接,是指是指只要其中一个表中存在匹配就返回行,左表与右表都全部返回,左表关联不上的就返回null,右表关联
不上的也返回null。
* JOIN: 如果表中有至少一个匹配,则返回行(注:join与inner join是相同的)
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
相当于直等于,有一行匹配就只返回匹配的那行,其他的都不返回。
* LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
左连接,是指左表为主表,主表返回所有的行,而右表只返回与左表匹配的行,左表没有关联上的就返回null。
* RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
右连接,是指右表为主表,主表返回所有的行,而左表只返回与右表匹配的行,右表没有关联上的就返回null。
* FULL JOIN: 只要其中一个表中存在匹配,就返回行
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
完全连接,是指是指只要其中一个表中存在匹配就返回行,左表与右表都全部返回,左表关联不上的就返回null,右表关联
不上的也返回null。