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子句的下图。
表A中的所有行都包含在结果集中。
因为第二行(a2,2)在表B中没有对应的行,所以LEFT JOIN子句创建了一个填充NULL的伪行。
下面的维恩图说明了LEFT JOIN子句。
注意,左外连接与左连接相同。
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子句从多个表中查询数据。