网站首页 > 基础教程 正文
在数据的海洋中,每个表都像是一个小岛,保存着特定的信息。当我们需要从多个岛屿中获取信息时,JOIN就像是连接它们的桥梁。这些桥梁的种类和结构决定了我们能从这些岛屿中获得哪些信息。
1. JOIN (INNER JOIN)
原理:JOIN(或INNER JOIN)只返回两个表中都有的数据。想象一下,两个岛屿之间有一座桥,只允许两边都认识的人通过。
用法:
SELECT columns
FROM table1
JOIN table2
ON table1.column = table2.column;
举例:
假设我们有两个表,一个是学生表students,一个是分数表scores。我们想知道哪些学生有分数记录。
SELECT students.name, scores.score
FROM students
JOIN scores
ON students.student_id = scores.student_id;
2. LEFT JOIN (LEFT OUTER JOIN)
原理:LEFT JOIN返回左表的所有记录和右表中匹配的记录。如果右表没有匹配的记录,则结果将为NULL。想象一个桥,左岛上的所有人都可以过桥,但如果他们在右岛没有朋友,那么他们就单独过桥。
用法:
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
举例:
使用上述的学生和分数表,我们想知道所有学生的名字,以及他们的分数(如果有的话)。
SELECT students.name, scores.score
FROM students
LEFT JOIN scores
ON students.student_id = scores.student_id;
3. RIGHT JOIN (RIGHT OUTER JOIN)
原理:与LEFT JOIN相反,RIGHT JOIN返回右表的所有记录和左表中匹配的记录。如果左表没有匹配的记录,则结果将为NULL。这次,桥的规则变了,右岛上的所有人都可以过桥,但如果他们在左岛没有朋友,那么他们就单独过桥。
用法:
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
举例:
使用学生和分数表,我们想知道所有有分数的记录,以及与之相关的学生(如果有的话)。
SELECT students.name, scores.score
FROM students
RIGHT JOIN scores
ON students.student_id = scores.student_id;
结论
JOIN操作的核心是关联两个或多个表,以根据我们的需求获取数据。选择哪种JOIN,完全取决于我们希望从这些“岛屿”中获取哪些信息。一旦掌握了这些基本的JOIN操作,你就可以轻松地从多个表中提取所需的数据了。
猜你喜欢
- 2024-10-11 SQL语法——右连接 RIGHT JOIN 关键字
- 2024-10-11 数据筛选,如何像SQL一样使用Pandas完成JOIN连接、UNION合并查询
- 2024-10-11 SQL多个Join on 和Where间的执行顺序(nest loop join机制)
- 2024-10-11 SparkSQL大数据实战:揭开Join的神秘面纱
- 2024-10-11 SQL INNER JOIN 关键字 sql关键字union
- 2024-10-11 阿里规范不建议多表join,可这SQL要怎么写
- 2024-10-11 SQL RIGHT JOIN 关键字 sql语句 关键字
- 2024-10-11 Apache Flink 漫谈系列-JOIN 算子
- 2024-10-11 awk实现类sql的join操作 awvs结合sqlmap
- 2024-10-11 扩展FlinkSQL实现流与维表Join flinksql mysql维表
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)