在 MySQL 中,INNER JOIN
、LEFT JOIN
和 RIGHT JOIN
是用于连接多个表的常见操作,它们的区别主要体现在返回结果集的方式上。
1. INNER JOIN
- 定义:
INNER JOIN
返回两个表中满足连接条件的记录。 - 结果集: 只包含两个表中都有匹配记录的行。
- 语法:SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
- 示例: 如果
table1
和table2
中有匹配的记录,则返回这些记录;如果没有匹配的记录,则不返回任何结果。
2. LEFT JOIN (或 LEFT OUTER JOIN)
- 定义:
LEFT JOIN
返回左表中的所有记录,即使右表中没有匹配的记录。 - 结果集: 包含左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则返回
NULL
。 - 语法:
SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
- 示例: 即使
table2
中没有与table1
匹配的记录,table1
的所有记录仍会出现在结果集中,table2
的对应字段为NULL
。
3. RIGHT JOIN (或 RIGHT OUTER JOIN)
- 定义:
RIGHT JOIN
返回右表中的所有记录,即使左表中没有匹配的记录。 - 结果集: 包含右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记录,则返回
NULL
。 - 语法:
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
- 示例: 即使
table1
中没有与table2
匹配的记录,table2
的所有记录仍会出现在结果集中,table1
的对应字段为NULL
。
总结
- INNER JOIN: 只返回两个表中都有匹配记录的行。
- LEFT JOIN: 返回左表的所有记录和右表中匹配的记录,右表无匹配时返回
NULL
。 - RIGHT JOIN: 返回右表的所有记录和左表中匹配的记录,左表无匹配时返回
NULL
。
根据查询需求选择合适的连接方式。
THE END
暂无评论内容