Hướng dẫn intersect mysql - giao nhau mysql
Show Hướng dẫn MySQL này giải thích cách sử dụng toán tử giao nhau với cú pháp và ví dụ.INTERSECT operator with syntax and examples. Sự mô tảMặc dù không có toán tử giao nhau trong MYSQL, bạn có thể dễ dàng mô phỏng loại truy vấn này bằng mệnh đề IN trong mệnh đề hoặc mệnh đề tồn tại, tùy thuộc vào sự phức tạp của truy vấn giao nhau. Đầu tiên, chúng ta hãy giải thích một truy vấn giao nhau là gì. Một truy vấn giao nhau trả về giao điểm từ 2 bộ dữ liệu trở lên. Nếu một bản ghi tồn tại trong cả hai bộ dữ liệu, nó sẽ được đưa vào kết quả giao nhau. Tuy nhiên, nếu một bản ghi tồn tại trong một tập dữ liệu chứ không phải trong dữ liệu khác, nó sẽ bị bỏ qua khỏi kết quả giao nhau. Truy vấn giao nhauGiải thích: Truy vấn giao nhau sẽ trả lại các hồ sơ trong khu vực bóng mờ màu xanh. Đây là những bản ghi tồn tại trong cả DataSet1 và DataSet2. The INTERSECT query will return the records in the blue shaded area. These are the records that exist in both Dataset1 and Dataset2. Cú phápCú pháp cho toán tử giao nhau trong MySQL là: SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] INTERSECT SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions]; Tham số hoặc đối sốexpression1, expression2, ... expression_nthe các cột hoặc tính toán mà bạn muốn truy xuất. Phải có ít nhất một bảng được liệt kê trong mệnh đề từ điều kiện. Các điều kiện phải được đáp ứng cho các hồ sơ được chọn.Ghi chú
Ví dụ - với biểu thức đơn lẻĐầu tiên, hãy khám phá cách mô phỏng truy vấn giao nhau trong MySQL có một trường có cùng loại dữ liệu. Nếu cơ sở dữ liệu hỗ trợ toán tử giao nhau (mà MySQL không có), đây là cách bạn sử dụng toán tử giao nhau để trả về các giá trị CAGE_ID phổ biến giữa các sản phẩm và bảng hàng tồn kho. SELECT category_id FROM products INTERSECT SELECT category_id FROM inventory; Vì bạn không thể sử dụng toán tử giao nhau trong MySQL, bạn sẽ sử dụng toán tử trong để mô phỏng truy vấn giao nhau như sau: SELECT products.category_id FROM products WHERE products.category_id IN (SELECT inventory.category_id FROM inventory); Trong ví dụ đơn giản này, bạn có thể sử dụng toán tử trong để trả về tất cả các giá trị category_id tồn tại trong cả hai sản phẩm và bảng hàng tồn kho. Bây giờ, hãy làm phức tạp ví dụ của chúng tôi thêm bằng cách thêm các điều kiện vào truy vấn giao nhau. Ví dụ, đây là cách giao nhau sẽ trông như thế nào với các điều kiện: SELECT category_id FROM products WHERE category_id < 100 INTERSECT SELECT category_id FROM inventory WHERE quantity > 0; Đây là cách bạn sẽ mô phỏng truy vấn giao nhau bằng cách sử dụng toán tử trong và bao gồm các điều kiện ở đâu: SELECT products.category_id FROM products WHERE products.category_id < 100 AND products.category_id IN (SELECT inventory.category_id FROM inventory WHERE inventory.quantity > 0); Trong ví dụ này, các mệnh đề đã được thêm vào đó lọc cả bảng sản phẩm cũng như kết quả từ bảng hàng tồn kho. Ví dụ - với nhiều biểu thứcTiếp theo, chúng ta hãy xem cách mô phỏng truy vấn giao nhau trong MySQL trả về nhiều cột. Đầu tiên, đây là cách bạn sẽ sử dụng toán tử giao nhau để trả về nhiều biểu thức. SELECT contact_id, last_name, first_name FROM contacts WHERE contact_id < 100 INTERSECT SELECT customer_id, last_name, first_name FROM customers WHERE last_name <> 'Johnson'; Một lần nữa, vì bạn không thể sử dụng toán tử giao nhau trong MySQL, bạn có thể sử dụng mệnh đề tồn tại trong các tình huống phức tạp hơn để mô phỏng truy vấn giao nhau như sau: SELECT contacts.contact_id, contacts.last_name, contacts.first_name FROM contacts WHERE contacts.contact_id < 100 AND EXISTS (SELECT * FROM customers WHERE customers.last_name <> 'Johnson' AND customers.customer_id = contacts.contact_id AND customers.last_name = contacts.last_name AND customers.first_name = contacts.first_name); Trong ví dụ phức tạp hơn này, bạn có thể sử dụng mệnh đề tồn tại để trả về nhiều biểu thức tồn tại trong cả hai bảng liên hệ trong đó contact_id nhỏ hơn 100 cũng như bảng khách hàng nơi Last_Name không bằng Johnson. Bởi vì bạn đang thực hiện giao nhau, bạn cần tham gia các trường giao nhau như sau: AND customers.customer_id = contacts.contact_id AND customers.last_name = contacts.last_name AND customers.first_name = contacts.first_name Sự tham gia này được thực hiện để đảm bảo rằng các trường khách hàng_id, last_name và first_name từ bảng khách hàng được giao với các trường contact_id, last_name và first_name từ bảng Danh bạ. |