什么是左内连接
在介绍 MSSQL 左内连接技术之前,我们先了解一下什么是左内连接。
左内连接(left inner join)是 SQL 查询的一种方式,它可以将两张表格(Table)中共有部分的数据连接起来,并以其中一个表格的数据为主体。
对于 SQL 查询语句 SELECT * FROM table1 LEFT JOIN table2 ON condition,其中 table1 表示需要取出数据的主表,而 table2 表示从表格中额外取出的数据。上述 SQL 语句实现的功能是将 table1 与 table2 以 condition 为联结条件进行左内连接(left inner join)。
左内连接的应用场景
左内连接可以用于一对多 (1:N) 的查询,例如我们有一个学生信息表 students 和一个成绩单表 scores,需要查询出每个学生的成绩。
实现方式是对学生信息表 students 与成绩单表 scores 以学生 ID 为联结条件进行左内连接,例如:
SELECT students.name, scores.score
FROM students
LEFT JOIN scores
ON students.id = scores.student_id
上述 SQL 查询语句将会输出每个学生的名字和该学生在成绩单表 scores 中的成绩。
实现 MSSQL 左内连接
创建测试数据表格
本文我们将会通过创建测试数据表格来实现 MSSQL 左内连接。
首先我们需要创建两个测试表格,一个是学生信息表(students),一个是学生评价表(student_evaluations),并向两个表格中插入一些测试数据。
查看学生信息表(students)中的数据:
CREATE TABLE students (
id INT PRIMARY KEY,
name NVARCHAR(50) NOT NULL
);
INSERT INTO students (id, name)
VALUES (1, 'John'),
(2, 'Sarah'),
(3, 'Mike'),
(4, 'Alice');
SELECT * FROM students;
查看输出结果如下:
id | name
---|------
1 | John
2 | Sarah
3 | Mike
4 | Alice
查看学生评价表(student_evaluations)中的数据:
CREATE TABLE student_evaluations (
id INT PRIMARY KEY,
student_id INT NOT NULL,
evaluation NVARCHAR(50) NOT NULL
);
INSERT INTO student_evaluations (id, student_id, evaluation)
VALUES (1, 1, 'Good'),
(2, 1, 'Excellent'),
(3, 2, 'Average'),
(4, 3, 'Poor');
SELECT * FROM student_evaluations;
查看输出结果如下:
id | student_id | evaluation
---|-----------|-----------
1 | 1 | Good
2 | 1 | Excellent
3 | 2 | Average
4 | 3 | Poor
执行左内连接
现在我们已经创建好了两个测试表格并向其中插入了一些测试数据,接下来我们将执行左内连接并输出结果。
为了能够实现左内连接(left inner join),我们需要使用 SQL 语句中的 LEFT JOIN 关键字。
SELECT students.name, student_evaluations.evaluation
FROM students
LEFT JOIN student_evaluations
ON students.id = student_evaluations.student_id;
上述 SQL 语句实现的功能是将学生信息表 students 与学生评价表 student_evaluations 以学生 ID 为联结条件进行左内连接。
输出结果如下:
name | evaluation
------|-----------
John | Good
John | Excellent
Sarah | Average
Mike | Poor
Alice | (null)
从输出结果中可以看出,我们成功地将学生信息表 students 与学生评价表 student_evaluations 进行了左内连接,并且在输出结果中可以找到每个学生对应的评价。
总结
通过本文的学习,我们了解到了什么是左内连接(left inner join)以及它的应用场景。同时我们还学习了如何在 MSSQL 中实现左内连接,通过创建测试数据表格和执行 SQL 查询语句,我们成功地输出了一张包含每个学生的评价的表格。