Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite LEFT JOIN
mệnh đề để truy vấn dữ liệu từ nhiều bảng.
Giới thiệu về SQLite LEFT JOIN
mệnh đề
Tương tự với INNER JOIN
mệnh đề LEFT JOIN
mệnh đề là một mệnh đề tùy chọn của SELECT
tuyên bố. Bạn sử dụng LEFT JOIN
mệnh đề để truy vấn dữ liệu từ nhiều bảng có liên quan.
Giả sử chúng ta có hai bảng:A và B.
- A có m và f cột.
- B có n và f cột.
Để thực hiện kết hợp giữa A và B bằng cách sử dụng LEFT JOIN
, bạn sử dụng câu lệnh sau:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;
Code language: SQL (Structured Query Language) (sql)
Biểu thức A.f = B.f
là một biểu thức điều kiện. Bên cạnh toán tử bằng (=), bạn có thể sử dụng các toán tử so sánh khác như lớn hơn (>), nhỏ hơn (<), v.v.
Câu lệnh trả về tập kết quả bao gồm:
- Các hàng trong bảng A (bảng bên trái) có các hàng tương ứng trong bảng B.
- Các hàng trong bảng A bảng và các hàng trong bảng B được điền bằng
NULL
trong trường hợp hàng từ bảng A không có bất kỳ hàng nào tương ứng trong bảng B.
Nói cách khác, tất cả các hàng trong bảng A đều được đưa vào tập kết quả cho dù có các hàng phù hợp trong bảng B hay không.
Trong trường hợp bạn có WHERE
mệnh đề trong câu lệnh, search_condition
trong WHERE
mệnh đề được áp dụng sau khi kết hợp LEFT JOIN
mệnh đề hoàn thành.
Xem hình minh họa sau về LEFT JOIN
giữa bảng A và bảng B.
Tất cả các hàng trong bảng A đều có trong tập kết quả.
Vì hàng thứ hai (a2,2)
không có hàng tương ứng trong bảng B, LEFT JOIN
mệnh đề tạo ra một hàng giả chứa đầy NULL
.
Sơ đồ Venn sau đây minh họa LEFT JOIN
mệnh đề.
Cần lưu ý rằng LEFT OUTER JOIN
giống với LEFT JOIN
.
SQLite LEFT JOIN
ví dụ
Chúng tôi sẽ sử dụng các artists
và albums
các bảng trong cơ sở dữ liệu mẫu để trình diễn.
Một album thuộc về một nghệ sĩ. Tuy nhiên, một nghệ sĩ có thể có không hoặc nhiều album.
Để tìm nghệ sĩ không có bất kỳ album nào bằng cách sử dụng LEFT JOIN
, chúng tôi chọn nghệ sĩ và album tương ứng của họ. Nếu một nghệ sĩ không có bất kỳ album nào, giá trị của AlbumId
cột là NULL.
Để hiển thị những nghệ sĩ không có bất kỳ album nào trước tiên, chúng tôi có hai lựa chọn:
- Đầu tiên, sử dụng
ORDER BY
mệnh đề liệt kê các hàng cóAlbumId
làNULL
giá trị đầu tiên. - Thứ hai, sử dụng
WHERE
mệnh đề vàIS NULL
để chỉ liệt kê những nghệ sĩ không có bất kỳ album nào.
Câu lệnh sau sử dụng LEFT JOIN
mệnh đề với ORDER BY
mệnh đề.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Câu lệnh sau sử dụng LEFT JOIN
mệnh đề với WHERE
mệnh đề.
SELECT
artists.ArtistId
, AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
WHERE
AlbumId IS NULL;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Trong hướng dẫn này, bạn đã học cách sử dụng SQLite LEFT JOIN
mệnh đề để truy vấn dữ liệu từ nhiều bảng.