跳到主要内容

MySQL left join、right join以及inner join的区别 ?

参考答案:

MySQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN是用于将两个或多个表基于某些关联条件进行连接查询的。它们之间的主要区别在于如何处理没有匹配的行。

  1. INNER JOIN(或简称 JOIN)

    • 也称为内连接。
    • 只返回两个表中都有匹配的行。
    • 如果某行在一个表中没有匹配,那么该行将不会出现在结果中。
    • 例如,SELECT * FROM A INNER JOIN B ON A.id = B.id; 将只返回A和B两个表中id字段相匹配的行。
  2. LEFT JOIN(或 LEFT OUTER JOIN)

    • 左连接。
    • 返回左表中的所有行,以及右表中匹配的行。
    • 如果左表中的某行在右表中没有匹配,那么结果中的右表部分将包含NULL值。
    • 例如,SELECT * FROM A LEFT JOIN B ON A.id = B.id; 将返回A表中的所有行,以及B表中与A表中id字段相匹配的行。如果A表中的某行在B表中没有匹配,那么该行在B表的部分将显示为NULL。
  3. RIGHT JOIN(或 RIGHT OUTER JOIN)

    • 右连接。
    • 返回右表中的所有行,以及左表中匹配的行。
    • 如果右表中的某行在左表中没有匹配,那么结果中的左表部分将包含NULL值。
    • 例如,SELECT * FROM A RIGHT JOIN B ON A.id = B.id; 将返回B表中的所有行,以及A表中与B表中id字段相匹配的行。如果B表中的某行在A表中没有匹配,那么该行在A表的部分将显示为NULL。

总结

  • INNER JOIN 只返回两个表都有匹配的行。
  • LEFT JOIN 返回左表的所有行,以及右表中匹配的行。左表没有匹配的行在右表部分显示为NULL。
  • RIGHT JOIN 返回右表的所有行,以及左表中匹配的行。右表没有匹配的行在左表部分显示为NULL。

选择哪种连接类型取决于你想从查询中得到什么样的结果。