一、左连接基础知识
1、左连接是什么:
左连接(Left Join)是一种常见的表连接方式,它会返回左边表格的所有记录以及右边表格中符合条件的那些记录,如果右边表格中没有符合条件的记录,则会返回 NULL 值。
SELECT A.*, B.*
FROM tableA A
LEFT JOIN tableB B
ON A.ID = B.ID
2、左连接的语法:
LEFT JOIN 关键字用于从左表(tableA)中选取所有的行,如果右表(tableB)中没有匹配行,则结果中会补 NULL。
SELECT column_name(s)
FROM tableA
LEFT JOIN tableB
ON tableA.column_name = tableB.column_name;
3、左连接的特点:
左连接具有保留左表全部数据的特点,又称为左外连接。
二、左连接操作实例
1、左连接示例:
下面我们以题材电影与电影名称数据库为例,来说明 SQL Server 中左连接的具体操作。
题材电影表格:GenreMovies
ID MovieID GenreID
1 1 1
2 1 2
3 2 2
4 3 3
5 3 4
电影名称表格: Movies
MovieID Movie_Name Year
1 The Shawshank Redemption 1994
2 The Godfather 1972
3 The Dark Knight 2008
我们想查询题材电影表和电影名称表中所有有关联的电影记录,包括未知电影类型的电影记录。一种可行的方法是使用 LEFT JOIN 操作符,如下所示:
SELECT Movies.MovieID, Movies.Movie_Name, GenreMovies.GenreID
FROM Movies
LEFT JOIN GenreMovies ON Movies.MovieID = GenreMovies.MovieID
ORDER BY Movies.MovieID
其结果如下:
MovieID Movie_Name GenreID
1 The Shawshank Redemption 1
1 The Shawshank Redemption 2
2 The Godfather 2
3 The Dark Knight 3
3 The Dark Knight 4
2、左连接有 NULL 值的情况说明:
假设我们想查找 1994 年的所有电影的电影名称和电影类型,但是某些电影可能没有类型,下面代码进行了处理,此外 Movie_Name 字段使用副本而不是源字段,因此显示了 NULL 值,如下所示:
SELECT Movies.MovieID, ISNULL(Movies.Movie_Name, 'NULL') AS Movie_Name, GenreMovies.GenreID
FROM Movies
LEFT JOIN GenreMovies ON Movies.MovieID = GenreMovies.MovieID
WHERE YEAR(Movies.Year) = 1994
ORDER BY Movies.MovieID
MovieID Movie_Name GenreID
1 The Shawshank 1
1 The Shawshank 2
NULL NULL NULL
三、左连接的应用场景
1、使用 LEFT JOIN 联接表格:
左连接用于查询左边表格的完全内容,同时还返回右边表格中符合条件的值。这样做的好处在于,即使右边表中的某些值没有相应的记录,也不会丢失左边表格的内容。
2、查询列表中的所有值:
当用户需要查看整个列表的所有值时,使用 LEFT JOIN 是更好的选择,这样做更确保全部更新,可以避免不必要的错误。
3、查找 NULL 或缺失值:
使用 LEFT JOIN 进行数据查找时,可以确定缺失或 NULL 值,这对于进行数据清理和数据分析非常有用。
四、小结
本文对 SQL Server 中的左连接进行了详细的阐述,包括左连接的基础知识、操作实例、应用场景等多个方面。通过学习本文,读者将会对 SQL Server 中的左连接有全面的了解。