MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?

在MySQL中,INNER JOINLEFT JOINRIGHT JOIN是用于连接两个或多个表的操作符,它们的主要区别在于如何处理匹配的记录和不匹配的记录。

  1. INNER JOIN

    • 只返回两个表中匹配的记录。

    • 如果在左表和右表中找不到匹配的行,那么这些行将不会出现在结果集中。

    • 语法:

      SELECT columns
      FROM table1
      INNER JOIN table2
      ON table1.column = table2.column;
      
  2. LEFT JOIN (或 LEFT OUTER JOIN)

    • 返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中右表的字段会显示为NULL

    • 适用于需要保留左表所有记录的场景。

    • 语法:

      SELECT columns
      FROM table1
      LEFT JOIN table2
      ON table1.column = table2.column;
      
  3. RIGHT JOIN (或 RIGHT OUTER JOIN)

    • 返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中左表的字段会显示为NULL

    • 适用于需要保留右表所有记录的场景。

    • 语法:

      SELECT columns
      FROM table1
      RIGHT JOIN table2
      ON table1.column = table2.column;
      

总结:

  • INNER JOIN:仅返回两个表中都有的匹配行。
  • LEFT JOIN:返回左表的所有行,以及右表中的匹配行,如果右表没有匹配,返回NULL
  • RIGHT JOIN:返回右表的所有行,以及左表中的匹配行,如果左表没有匹配,返回NULL
posted @ 2024-12-15 17:06  Eiffelzero  阅读(359)  评论(0)    收藏  举报