Mệnh đề Intersect trong SQL Server là gì?

Bạn có biết sự khác biệt giữa mệnh đề INTERSECT và MINUS của SQL và cách sử dụng chúng không?

SQL

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 là các mệnh đề hữu ích để tìm nhanh sự khác biệt giữa hai bảng và tìm các hàng mà chúng chia sẻ

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 so sánh dữ liệu giữa các bảng và chỉ trả về các hàng dữ liệu tồn tại trong cả hai bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 so sánh dữ liệu giữa các bảng và trả về các hàng dữ liệu chỉ tồn tại trong bảng đầu tiên mà bạn chỉ định

Cả SQL

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 [hoặc
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
9, tùy thuộc vào phương ngữ SQL của bạn] đều là một phần của LearnSQL. khóa học Cơ bản về SQL của com

GIAO DIỆN SQL

Toán tử SQL

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 được sử dụng để trả về kết quả của hai hoặc nhiều câu lệnh
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1. Tuy nhiên, nó chỉ trả về các hàng được chọn bởi tất cả các truy vấn hoặc tập dữ liệu. Nếu một bản ghi tồn tại trong một truy vấn và không tồn tại trong truy vấn kia, nó sẽ bị loại khỏi kết quả
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3

Số lượng và thứ tự của các cột phải giống nhau trong tất cả các truy vấn

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1

Các kiểu dữ liệu cột phải giống nhau hoặc ít nhất là tương thích với nhau.

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 lọc các bản sao và chỉ trả về các hàng riêng biệt phổ biến giữa tất cả các truy vấn

Đây là cú pháp của toán tử

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3

Bất cứ điều gì bên trong dấu ngoặc vuông là hoàn toàn tùy chọn. Khái niệm về một

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 được giải thích thêm bằng sơ đồ sau

Truy vấn

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 sẽ trả về các bản ghi trong vùng được tô bóng. Đây là những bản ghi tồn tại trong cả hai tập dữ liệu

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 chỉ là một cách hợp nhất kết quả của các truy vấn SQL khác nhau. Nếu bạn muốn tìm hiểu thêm, bài viết này đề cập đến các phương pháp khác nhau để kết hợp kết quả của các truy vấn SQL

SQL TRỪ

Mệnh đề SQL

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 được sử dụng để kết hợp hai câu lệnh
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1, nhưng nó trả về các hàng từ câu lệnh
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 đầu tiên không được trả về bởi câu lệnh
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 thứ hai. SQL
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 chỉ trả về các hàng không có trong câu lệnh
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 thứ hai

Mỗi câu lệnh

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 trong truy vấn
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 phải chứa cùng một số trường trong tập kết quả cùng với các loại dữ liệu tương tự

Toán tử

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 không được hỗ trợ trong tất cả các cơ sở dữ liệu SQL. Nó có thể được sử dụng trong các cơ sở dữ liệu như MySQL và Oracle. Đối với các cơ sở dữ liệu như SQL Server, PostgreSQL và SQLite, hãy sử dụng toán tử
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
9 để thực hiện loại truy vấn này

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

Mã SQL hiển thị trong ngoặc vuông là hoàn toàn tùy chọn. Khái niệm về SQL

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 được giải thích thêm bằng sơ đồ này

Truy vấn

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 sẽ trả về các bản ghi trong vùng màu đỏ. Đây là những bản ghi tồn tại trong tập dữ liệu đầu tiên chứ không phải thứ hai

TRỪ so với. GIAO NHAU. ví dụ

Hãy áp dụng mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 vào một ví dụ thực tế. Hãy tưởng tượng chúng ta có các bảng sau

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
23 - Chứa thông tin chi tiết về khách hàng của chúng tôi

idcustomer_namecountry1Infotech SolutionsĐức2Corpway IndustriesIreland3Fenway IncAnh4Fairview LtdPháp

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
24 - Chứa thông tin chi tiết về các nhà cung cấp của chúng tôi

idcustomer_namecountry1Các nhà cung cấp Carbon WayTây Ban Nha2Alloy IncPháp3Materials Delivered LtdIreland4Đội bê tôngBa Lan5Conglorito SystemsÝ

Bây giờ hãy viết một truy vấn

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3. Chúng tôi muốn tìm các quốc gia mà nhà cung cấp và khách hàng của chúng tôi có điểm chung

________số 8

Chúng tôi chỉ định cột quốc gia trong mỗi mệnh đề

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1. Thực hiện truy vấn này dẫn đến tập dữ liệu sau

đất nướcPhápIreland

Nhìn lại bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
23 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
28 ta thấy kết quả này đúng. Chỉ có các quốc gia Pháp và Ireland được chia sẻ giữa các bảng

Bây giờ, hãy áp dụng toán tử

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 cho các bảng giống nhau. Điều này sẽ cho phép chúng tôi lấy các quốc gia trong bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
23 không có trong bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
28 của chúng tôi

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
2

Thực hiện truy vấn này mang lại kết quả

đất nướcAnhĐức

Ở đó chúng tôi có nó. các quốc gia duy nhất trong bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
32 của chúng tôi. Thứ tự của các mệnh đề
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 của bạn rất quan trọng ở đây và đó là điều bạn phải lưu ý khi sử dụng toán tử
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4. Hãy đảo ngược thứ tự của mệnh đề
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 của chúng ta và xem điều gì sẽ xảy ra

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
2

Thực hiện truy vấn này trả về dữ liệu sau

đất nướcÝBa LanTây Ban Nha

Như bạn có thể thấy, tập hợp kết quả của chúng tôi rất khác nhau. SQL bắt đầu với bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
28 của chúng tôi và sau đó loại bỏ bất kỳ quốc gia nào tồn tại trong bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
23

Nếu bạn cảm thấy choáng ngợp, hãy cân nhắc thử theo dõi Nguyên tắc cơ bản về SQL từ LearnSQL. com, sẽ cung cấp cho bạn một nền tảng SQL vững chắc. Nó sẽ dạy cho bạn các câu lệnh SQL cơ bản như ________ 438, ________ 439, ________ 520 và ________ 521. Bạn cũng sẽ học cách

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
22 bảng và thêm, sửa đổi hoặc xóa dữ liệu khỏi cơ sở dữ liệu

Đây là một ví dụ đơn giản cho bạn thấy cách sử dụng toán tử

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 để nhanh chóng truy xuất các bộ dữ liệu riêng biệt. Chúng ta hãy xem thêm một số ví dụ cho bạn thấy các toán tử này sẽ hành động như thế nào trong ba tình huống khác nhau

  • Một bảng là tập hợp con của dữ liệu của bảng kia
  • Cả hai bảng đều có cùng dữ liệu
  • Một bảng trong truy vấn của bạn không chứa dữ liệu

Thêm các ví dụ SQL INTERSECT và MINUS

Một bảng là tập hợp con của dữ liệu của bảng khác

Đối với kịch bản này, hãy tưởng tượng chúng ta có hai bảng tên là

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
26. Như bạn có thể thấy bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
26 là một tập hợp con của
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25, nghĩa là tất cả dữ liệu của nó cũng được chứa trong
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25 - Tất cả nhân viên làm việc tại công ty chúng tôi

employee_idfirst_namelast_name321873JohnSmith415938JaneRamsey783273AndrewJohnson832923ChristinaGrey

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
31 - Tất cả nhân viên trong ủy ban kế hoạch của công ty chúng tôi

employee_idfirst_namelast_name415938JaneRamsey783273AndrewJohnson

Hãy xem mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 hoạt động như thế nào trong tình huống này

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3

Tập dữ liệu sau được trả về

employee_idfirst_namelast_name415938JaneRamsey783273AndrewJohnson

Như bạn có thể thấy, chỉ tập hợp con được trả về. Điều này là do bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
26 là một tập hợp con của bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25;

Điều gì xảy ra nếu chúng ta sử dụng mệnh đề MINUS để thay thế? . Điều này có thể đạt được bằng cách viết truy vấn bên dưới

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
2

Thực hiện truy vấn này mang lại kết quả sau

employee_idfirst_namelast_name321873JohnSmith832923ChristinaGrey

Bạn có thể thấy rằng những nhân viên này không có trong bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
31; . Một lần nữa, thứ tự của các bảng ở đây rất quan trọng. Nếu chúng ta đảo ngược thứ tự của mệnh đề
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 như vậy

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3

… thực hiện truy vấn này sẽ mang lại một kết quả rất khác

employee_id first_name last_name

Vì tất cả dữ liệu trong bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
26 được chứa trong bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25 nên không có gì được trả về. SQL
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 chỉ trả về dữ liệu riêng biệt

Thời gian để xem xét kịch bản tiếp theo của chúng tôi

Cả hai bảng đều có cùng dữ liệu

Có thể xảy ra trường hợp hai bảng SQL có dữ liệu giống hệt nhau. Các mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 xử lý tình huống này như thế nào và bạn mong đợi kết quả gì?

Đối với kịch bản này, chúng tôi sẽ sử dụng các bảng sau

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
83 - Tất cả nhân viên hiện đang được trả lương tại công ty chúng tôi

employee_idfirst_namelast_name321873JohnSmith415938JaneRamsey783273AndrewJohnson832923ChristinaGrey

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
84 - Tất cả nhân viên tại công ty chúng tôi

employee_idfirst_namelast_name321873JohnSmith415938JaneRamsey783273AndrewJohnson832923ChristinaGrey

Bạn có thể thấy rằng tất cả nhân viên tại công ty của chúng tôi hiện đang được trả lương và được trả lương như họ nên làm. Điều này dẫn đến các bảng này chứa dữ liệu giống hệt nhau

Hãy xem cách mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 xử lý trường hợp này

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
8

Thực hiện truy vấn này trả về kết quả này

employee_idfirst_namelast_name321873JohnSmith415938JaneRamsey783273AndrewJohnson832923ChristinaGrey

Vì tất cả dữ liệu được chia sẻ giữa hai bảng nên mọi thứ sẽ được trả về

Đã đến lúc xem cách mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 xử lý các bảng chia sẻ dữ liệu giống hệt nhau

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
3

Thực hiện truy vấn này hiển thị kết quả sau

employee_id first_name last_name

Không có dữ liệu nào được trả về. SQL bắt đầu bằng cách chọn dữ liệu trong bảng

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25 của chúng tôi và sau đó trừ dữ liệu tồn tại trong bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
83. Trong trường hợp này, mọi thứ sẽ bị xóa

Điều này dẫn đến kịch bản cuối cùng của chúng tôi. Điều gì sẽ xảy ra nếu một trong các bảng tạo thành một phần của mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 hoặc
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 không chứa dữ liệu?

Một bảng không chứa dữ liệu

Đối với kịch bản này, chúng tôi sẽ sử dụng các bảng sau

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
25 - Tất cả nhân viên làm việc tại công ty chúng tôi

employee_idfirst_namelast_name321873JohnSmith415938JaneRamsey783273AndrewJohnson832923ChristinaGrey

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
32 - Tất cả nhân viên công ty chúng tôi hiện đang đi nghỉ

employee_id first_name last_name

Hãy cùng tìm hiểu cách mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 xử lý một bảng trống

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
0

Chúng tôi đã đưa ra kết quả sau khi thực hiện truy vấn này

employee_id first_name last_name

Ko có kết quả. Khi chúng tôi sử dụng một bảng trống như một phần của mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3, chúng tôi sẽ nhận được một tập dữ liệu trống. Điều này là do không thể tìm thấy kết quả phù hợp giữa hai bảng

Mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 bị ảnh hưởng như thế nào khi bao gồm một bảng trống hoàn toàn phụ thuộc vào thứ tự bạn chỉ định. Ví dụ, truy vấn này

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
1

mang lại kết quả sau

employee_idfirst_namelast_name321873JohnSmith415938JaneRamsey783273AndrewJohnson832923ChristinaGrey

Mệnh đề

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4 ở đây có rất ít tác dụng, vì về cơ bản bạn không lấy đi gì [một tập dữ liệu trống] từ bảng
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
84

Tuy nhiên, nếu chúng ta đảo ngược thứ tự của mệnh đề

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1, như vậy

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
2

… chúng tôi đang phải đối mặt với một kết quả rất khác

employee_idfirst_namelast_nameSmith

Một tập dữ liệu trống khác. Điều này xảy ra vì mệnh đề

SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
1 đầu tiên truy xuất dữ liệu từ bảng
SELECT country
FROM customers
INTERSECT
SELECT country
FROM suppliers
32, trong trường hợp này là không có gì. Sau đó, chúng tôi hướng dẫn SQL lấy dữ liệu
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
84 khỏi tập dữ liệu trống của chúng tôi. Điều này không có tác dụng vì tập dữ liệu đã trống

INTERSECT, MINUS và các toán tử tập hợp SQL khác

Trong bài viết này, chúng tôi đã trình bày chi tiết về SQL

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
3 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
4. Chúng được gọi là toán tử tập hợp SQL, cũng bao gồm
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
04 và
SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]
FROM table_1 [, table_2, …, table_n]
[WHERE condition]
05. Bạn có thể đọc phần giới thiệu về toán tử tập hợp SQL tại đây, cùng với cách tinh chỉnh thêm kết quả với toán tử tập hợp

INTERSECT có hoạt động trong SQL Server không?

Toán tử INTERSECT của SQL Server [Transact-SQL] được sử dụng để trả về các bản ghi chung giữa hai câu lệnh SELECT hoặc tập dữ liệu . Nếu một bản ghi tồn tại trong một truy vấn và không tồn tại trong truy vấn kia, nó sẽ bị bỏ qua khỏi kết quả INTERSECT. Nó là giao điểm của hai câu lệnh SELECT.

Lệnh INTERSECT là gì?

Tạo khối 3D, bề mặt hoặc vùng 2D từ các khối, bề mặt hoặc vùng chồng lấp . Với INTERSECT, bạn có thể tạo khối 3D từ khối chung của hai hoặc nhiều khối, bề mặt hoặc vùng 3D hiện có.

INTERSECT và tham gia có giống nhau không?

Chúng rất khác nhau , ngay cả trong trường hợp của bạn. INNER THAM GIA sẽ trả về các bản sao, nếu id được sao chép trong một trong hai bảng. INTERSECT loại bỏ trùng lặp. INNER JOIN sẽ không bao giờ trả về NULL , nhưng INTERSECT sẽ trả về NULL.

INTERSECT trong ví dụ là gì?

Một số chỗ có lòng suối khô cắt ngang đường mòn. Đường thẳng A cắt đường thẳng B. Hai con đường giao nhau ở rìa thị trấn.

Chủ Đề