MySQL 中的 LEFT JOIN 只保留第一行

MySQL 中的 LEFT JOIN 只保留第一行

在MySQL中,LEFT JOIN语句是常用的查询语句之一,可以把两个表格(A和B)的内容联结在一起,LEFT JOIN会保留第一个表格中的所有行,以及与之对应的另一个表格中的匹配行。但如果想保留第一个表格中匹配的第一行,而不是所有相关行,怎么办呢?本文将解决这个问题。

假设我们有两个表A和B,分别列出了学生和他们的主修课程:

表A:

学生ID 姓名
1 Tom
2 Bob
3 Amy
4 Michael

表B:

学生ID 课程名 分数
1 Mathematics 90
1 Physics 85
2 Literature 75
2 History 80
3 Art 95
4 Biology 70

如果我们想要联结两个表格,把每个学生的信息和他们所选的第一门课列在一起,可以使用以下代码:

SELECT A.学生ID, A.姓名, B.课程名, B.分数 
FROM A
LEFT JOIN B ON A.学生ID = B.学生ID
GROUP BY A.学生ID;

以上代码会输出以下结果:

学生ID 姓名 课程名 分数
1 Tom Mathematics 90
2 Bob Literature 75
3 Amy Art 95
4 Michael Biology 70

但如果我们只想要每个学生的第一门课的信息,而不是所有相关课程的信息,可以使用以下代码:

SELECT A.学生ID, A.姓名, B.课程名, B.分数 
FROM A
LEFT JOIN (SELECT 学生ID, 课程名, 分数 
           FROM B 
           GROUP BY 学生ID 
           ORDER BY 学生ID) AS B ON A.学生ID = B.学生ID;

以上代码会输出以下结果:

学生ID 姓名 课程名 分数
1 Tom Mathematics 90
2 Bob Literature 75
3 Amy Art 95
4 Michael Biology 70

阅读更多:MySQL 教程

总结

通过使用子查询和GROUP BY语句,可以在MySQL中使用LEFT JOIN语句只保留第一个表格中匹配的第一行。以上示例代码可以有效地应用于实际工作中,并提高查询效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程