在数据库查询中,左外连接(LEFT JOIN)用于从左表返回所有记录,即使右表中没有匹配项。以下是一个示例:

表格1: 学生成绩表 (tSc)

| StudentsID | CourseID | Grade |

|------------|----------|-------|

| 1 | 001 | 97 |

| 2 | 002 | 89 |

| 3 | 003 | 81 |

| 3 | 002 | 76 |

表格2: 学生信息表 (tStudents)

| SNo | SName |

|-----|---------|

| 1 | 梅超风 |

| 2 | 陈玄风 |

| 3 | 陆乘风 |

| 4 | 曲灵风 |

使用左外连接进行查询:

SELECT tS.SName, C.CourseID, C.Grade
FROM ttStudents AS S
LEFT JOIN tSc AS C ON S.SNo = C.StudentID;

返回的结果为:

| SName | CourseID | Grade |

|---------|----------|-------|

| 梅超风 | 001 | 97 |

| 陈玄风 | 002 | 89 |

| 陆乘风 | 003 | 81 |

| 曲灵风 | NULL | NULL |

注意:上面查询会返回所有学生及其对应课程成绩,即使某些学生没有选择课程,返回结果中的课程ID成绩为NULL。

如果调换表的位置,即先从课程表查询,再进行左外连接,查询语句如下:

SELECT tS.SName, C.CourseID, C.Grade
FROM tSc AS C
LEFT JOIN ttStudents AS S ON C.StudentID = S.SNo;

查询结果是不同的,具体原因在于左外连接是基于查询顺序的。如果先选择课程表(tSc),结果将保留所有课程记录,并且在没有匹配学生的情况下返回NULL。

结论:两种写法结果不完全相同,主要是因为左外连接基于查询的顺序。