Skip to main content

SQLite左连接

SQLite左连接子句简介

与内部JOIN子句类似,LEFT JOIN子句是SELECT语句的可选子句。可以使用LEFT JOIN子句从多个相关表中查询数据。

假设我们有两张桌子:A和B。

要使用LEFT join子句在A和B之间执行join,请使用以下语句:

SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;

表达式A.f=B.f是一个条件表达式。除了相等(=)运算符外,还可以使用其他比较运算符,如大于(>)、小于(<)等。

该语句返回的结果集包括:

换句话说,不管表B中是否有匹配的行,表A中的所有行都包含在结果集中。

如果语句中有WHERE子句,则WHERE子句中的搜索条件将在左JOIN子句的匹配完成后应用。

请参见A表和B表之间的LEFT JOIN子句的下图。

SQLite left join example

表A中的所有行都包含在结果集中。

因为第二行(a2,2)在表B中没有对应的行,所以LEFT JOIN子句创建了一个填充NULL的伪行。

下面的维恩图说明了LEFT JOIN子句。

SQLite Left Join Venn Diagram

注意,左外连接与左连接相同。

SQLite左连接示例

我们将使用示例数据库中的艺术家和专辑表进行演示。

一张专辑属于一位艺术家。然而,一位艺术家可能没有或有更多的专辑。

要使用LEFT JOIN子句查找没有任何相册的艺术家,我们选择艺术家及其相应的相册。如果艺术家没有任何相册,则AlbumId列的值为空。

要先展示没有任何专辑的艺术家,我们有两个选择:

下面的语句将LEFT JOIN子句与ORDER BY子句一起使用。

SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;

试试看

下面的语句将LEFT JOIN子句与WHERE子句一起使用。

SELECT
artists.ArtistId
, AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
WHERE
AlbumId IS NULL;

试试看

在本教程中,您学习了如何使用SQLite LEFT JOIN子句从多个表中查询数据。