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

SQLite FULL OUTER JOIN Giả lập

Tóm tắt :trong hướng dẫn này, bạn sẽ học cách mô phỏng liên kết bên ngoài đầy đủ của SQLite bằng cách sử dụng UNIONLEFT JOIN mệnh đề.

Giới thiệu về SQL FULL OUTER JOIN mệnh đề

Về lý thuyết, kết quả của FULL OUTER JOIN là sự kết hợp của LEFT JOINRIGHT JOIN . Tập hợp kết quả của phép nối bên ngoài đầy đủ có NULL giá trị cho mọi cột của bảng không có hàng phù hợp trong bảng khác. Đối với các hàng phù hợp, FULL OUTER JOIN tạo ra một hàng với các giá trị từ các cột của các hàng trong cả hai bảng.

Hình ảnh sau đây minh họa kết quả của FULL OUTER JOIN mệnh đề:

Xem cats sau và dogs bảng.

-- create and insert data into the dogs table
CREATE TABLE dogs (
    type       TEXT,
    color TEXT
);

INSERT INTO dogs(type, color) 
VALUES('Hunting','Black'), ('Guard','Brown');

-- create and insert data into the cats table
CREATE TABLE cats (
    type       TEXT,
    color TEXT
);

INSERT INTO cats(type,color) 
VALUES('Indoor','White'), 
      ('Outdoor','Black');Code language: SQL (Structured Query Language) (sql)

Câu lệnh sau sử dụng FULL OUTER JOIN mệnh đề truy vấn dữ liệu từ dogscats bảng.

SELECT *
FROM dogs 
FULL OUTER JOIN cats
    ON dogs.color = cats.color;Code language: SQL (Structured Query Language) (sql)

Sau đây là kết quả của câu lệnh trên:

Loại Màu sắc Loại Màu sắc
Săn bắt Đen Ngoài trời Đen
Người bảo vệ Màu nâu KHÔNG ĐẦY ĐỦ KHÔNG ĐẦY ĐỦ
KHÔNG ĐỦ KHÔNG ĐẦY ĐỦ Trong nhà Màu trắng

Rất tiếc, SQLite không hỗ trợ RIGHT JOIN và cả FULL OUTER JOIN mệnh đề. Tuy nhiên, bạn có thể dễ dàng mô phỏng FULL OUTER JOIN bằng cách sử dụng LEFT JOIN mệnh đề.

Mô phỏng tham gia bên ngoài đầy đủ của SQLite

Câu lệnh sau mô phỏng FULL OUTER JOIN mệnh đề trong SQLite:

SELECT d.type,
         d.color,
         c.type,
         c.color
FROM dogs d
LEFT JOIN cats c USING(color)
UNION ALL
SELECT d.type,
         d.color,
         c.type,
         c.color
FROM cats c
LEFT JOIN dogs d USING(color)
WHERE d.color IS NULL;Code language: SQL (Structured Query Language) (sql)

Cách hoạt động của truy vấn.

  • Vì SQLilte không hỗ trợ RIGHT JOIN , chúng tôi sử dụng LEFT JOIN mệnh đề trong SELECT thứ hai thay vào đó, hãy chuyển đổi vị trí của catsdogs bảng.
  • UNION ALL mệnh đề giữ lại các hàng trùng lặp từ tập kết quả của cả hai truy vấn.
  • WHERE mệnh đề trong SELECT thứ hai câu lệnh xóa các hàng đã có trong tập kết quả của SELECT đầu tiên tuyên bố.

Trong hướng dẫn này, bạn đã học cách sử dụng UNION ALLLEFT JOIN mệnh đề để mô phỏng SQLite FULL OUTER JOIN mệnh đề.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng kết quả truy vấn SQLite dưới dạng danh sách được phân tách bằng dấu phẩy

  2. Cách tạo một cột được tính toán trong SQLite

  3. ActiveAndroid Điền trước bảng bằng cách sử dụng di chuyển giản đồ

  4. <expr> được mong đợi, có '?'

  5. SQLite - Tạo bảng