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

Toán tử INTERSECT của SQLite

Trong SQLite, INTERSECT toán tử được sử dụng để tạo một phức hợp SELECT câu lệnh trả về giao điểm của các kết quả của SELECT trái và phải các câu lệnh. Nói cách khác, nó kết hợp hai truy vấn, nhưng chỉ trả về những hàng được trả về trong cả hai truy vấn.

Ví dụ

Giả sử chúng ta có các bảng sau:

SELECT * FROM Employees;
SELECT * FROM Customers;

Kết quả:

EmployeeId  EmployeeName
----------  ------------
1           Bart        
2           Jan         
3           Ava         
4           Rohit       
5           Monish      
6           Monish      
7           Monish      

CustomerId  CustomerName
----------  ------------
1           Mia         
2           Rohit       
3           Peter       
4           Ava         
5           Monish      
6           Monish      

Chúng ta có thể sử dụng INTERSECT nhà điều hành để trả lại nhân viên cũng là khách hàng:

SELECT EmployeeName FROM Employees
INTERSECT
SELECT CustomerName FROM Customers;

Kết quả:

EmployeeName
------------
Ava         
Monish      
Rohit       

Vì vậy, chúng tôi chỉ nhận được các giá trị xuất hiện trong Employees bảng cũng xuất hiện trong Customers bàn.

Việc triển khai INTERSECT của SQLite toán tử chỉ trả về các hàng riêng biệt. Vì vậy, ví dụ trên chỉ trả về một hàng cho Monish, mặc dù có nhiều nhân viên và nhiều khách hàng có tên đó.

Các RDBMS khác cho phép chúng tôi đưa các bản sao vào kết quả bằng cách chấp nhận ALL tùy chọn từ khóa với INTERSECT của họ nhưng SQLite thì không (ít nhất, không phải tại thời điểm viết bài). Vui lòng kiểm tra tài liệu của SQLite trong trường hợp có bất kỳ điều gì thay đổi.

Một Truy vấn Thay thế

Có thể nhận được kết quả tương tự mà không cần sử dụng INTERSECT nhà điều hành. Ví dụ:chúng tôi có thể viết lại ví dụ đầu tiên của chúng tôi thành ví dụ này:

SELECT 
    DISTINCT EmployeeName
FROM Employees e
WHERE EXISTS (SELECT CustomerName FROM Customers c
WHERE e.EmployeeName = c.CustomerName);

Kết quả:

EmployeeName
------------
Ava         
Rohit       
Monish      

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LỖI:Không thể đọc hàng 0, cột -1 từ CursorWindow. Đảm bảo Con trỏ được khởi tạo chính xác trước khi truy cập dữ liệu

  2. SQLite AUTOINCREMENT

  3. 5 cách triển khai tìm kiếm không phân biệt chữ hoa chữ thường trong SQLite với sự hỗ trợ đầy đủ của Unicode

  4. Android lưu trữ phiên bản cơ sở dữ liệu của SQLite ở đâu?

  5. sqlLiteDatabase.query () cho INNER JOIN