LEFT JOIN RIGHT JOIN INNER JOIN JOIN如何理解这几个JOIN?

在SQL中,不同类型的JOIN用于合并两张表的数据。以下是这些JOIN的解释和示例:

  1. INNER JOIN: 仅返回两张表中匹配的记录。
  2. LEFT JOIN (或 LEFT OUTER JOIN): 返回左表中的所有记录,即使右表中没有匹配的记录。
  3. RIGHT JOIN (或 RIGHT OUTER JOIN): 返回右表中的所有记录,即使左表中没有匹配的记录。
  4. JOIN: 通常是INNER JOIN的简写,仅返回两张表中匹配的记录。

示例数据

假设我们有两张表:studentscourses

students

student_id student_name
1 Alice
2 Bob
3 Charlie

courses

course_id course_name student_id
101 Math 1
102 Science 1
103 History 2
104 Geography NULL

INNER JOIN 示例

SELECT s.student_name, c.course_name
FROM students s
INNER JOIN courses c ON s.student_id = c.student_id;

结果

student_name course_name
Alice Math
Alice Science
Bob History

LEFT JOIN 示例

SELECT s.student_name, c.course_name
FROM students s
LEFT JOIN courses c ON s.student_id = c.student_id;

结果

student_name course_name
Alice Math
Alice Science
Bob History
Charlie NULL

RIGHT JOIN 示例

SELECT s.student_name, c.course_name
FROM students s
RIGHT JOIN courses c ON s.student_id = c.student_id;

结果

student_name course_name
Alice Math
Alice Science
Bob History
NULL Geography

JOIN 示例

SELECT s.student_name, c.course_name
FROM students s
JOIN courses c ON s.student_id = c.student_id;

结果

student_name course_name
Alice Math
Alice Science
Bob History

这个JOIN实际上等同于INNER JOIN,因为默认情况下,JOIN就是INNER JOIN

总结

  • INNER JOIN: 只返回匹配的记录。
  • LEFT JOIN: 返回左表中的所有记录,以及匹配的右表记录,若无匹配则返回NULL。
  • RIGHT JOIN: 返回右表中的所有记录,以及匹配的左表记录,若无匹配则返回NULL。
  • JOIN: 等同于INNER JOIN

相关推荐

  1. LEFT JOIN RIGHT JOIN INNER JOIN JOIN如何理解JOIN

    2024-07-22 14:18:03       17 阅读
  2. 大模型产品,你觉得哪个好

    2024-07-22 14:18:03       23 阅读
  3. 如何理解大数据开发中的map join 知识点

    2024-07-22 14:18:03       31 阅读
  4. k8s中 容器、pod服务、svc服务 的区别

    2024-07-22 14:18:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 14:18:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 14:18:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 14:18:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 14:18:03       55 阅读

热门阅读

  1. Linux常用命令

    2024-07-22 14:18:03       16 阅读
  2. 软件测试-测试用例设计方法(附实际项目用例)

    2024-07-22 14:18:03       18 阅读
  3. 【图像处理】不智能的目标识别

    2024-07-22 14:18:03       20 阅读
  4. Linux基础: 五. 文本编辑器vi和vim

    2024-07-22 14:18:03       15 阅读
  5. lua 实现 函数 判断两个时间戳是否在同一天

    2024-07-22 14:18:03       17 阅读
  6. (四)js前端开发中设计模式之简单工厂模式

    2024-07-22 14:18:03       18 阅读
  7. HOW - CSS 定义颜色值

    2024-07-22 14:18:03       16 阅读