Tóm lược. trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng truy vấn con MySQL để viết các truy vấn phức tạp và giải thích khái niệm truy vấn con tương quan
Giới thiệu về Truy vấn con MySQL
Truy vấn con MySQL là một truy vấn được lồng trong một truy vấn khác, chẳng hạn như
SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)1,SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)2,SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)3 hoặcSELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)4. Ngoài ra, một truy vấn con có thể được lồng trong một truy vấn con khácTruy vấn con MySQL được gọi là truy vấn bên trong trong khi truy vấn chứa truy vấn con được gọi là truy vấn bên ngoài. Truy vấn con có thể được sử dụng ở bất kỳ đâu mà biểu thức đó được sử dụng và phải được đóng trong ngoặc đơn
Ví dụ: truy vấn sau sử dụng truy vấn con để trả về những nhân viên làm việc trong văn phòng ở Hoa Kỳ
SELECT lastName, firstName FROM employees WHERE officeCode IN (SELECT officeCode FROM offices WHERE country = 'USA');
Code language: SQL (Structured Query Language) (sql)trong ví dụ này
- Truy vấn con trả về tất cả các mã văn phòng của các văn phòng đặt tại Hoa Kỳ
- Truy vấn bên ngoài chọn họ và tên của nhân viên làm việc trong văn phòng có mã văn phòng trong tập kết quả được trả về bởi truy vấn con
Khi thực hiện truy vấn, MySQL đánh giá truy vấn con trước và sử dụng kết quả của truy vấn con cho truy vấn bên ngoài
Sử dụng truy vấn con MySQL trong mệnh đề WHERE
Chúng tôi sẽ sử dụng bảng
SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)5 trong cơ sở dữ liệu mẫu để minh họaTruy vấn con MySQL với các toán tử so sánh
Bạn có thể sử dụng các toán tử so sánh e. g. , =, >, < để so sánh một giá trị duy nhất được truy vấn con trả về với biểu thức trong mệnh đề
SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)6Ví dụ: truy vấn sau trả về khách hàng có khoản thanh toán cao nhất
SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)Bên cạnh toán tử
SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)7, bạn có thể sử dụng các toán tử so sánh khác như lớn hơn (SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)8), lớn hơn hoặc bằng (>=) nhỏ hơn (SELECT customerNumber, checkNumber, amount FROM payments WHERE amount = (SELECT MAX(amount) FROM payments);
Code language: SQL (Structured Query Language) (sql)9) và nhỏ hơn hoặc bằng (