SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Tham gia trái SQLite

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:

  1. 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.
  2. 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 artistsalbums 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ó AlbumIdNULL 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chmod không thành công:EPERM (Hoạt động không được phép) trong Android?

  2. sqlite:cách thêm tổng thời gian hh:mm:ss trong đó kiểu dữ liệu cột là DATETIME?

  3. Tính số giây kể từ một ngày / giờ cụ thể trong SQLite

  4. Cập nhật đẩy Android trên Cửa hàng Play

  5. Làm cách nào để chọn dữ liệu giữa hai ngày từ sqlite db ở định dạng dd-mm-yyyy?