Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Truy vấn con là một câu lệnh SELECT được lồng trong select, SELECT... INTO, INSERT... Câu lệnh INTO, DELETE hoặc UPDATE hoặc bên trong một truy vấn con khác.

Cú pháp

Bạn có thể sử dụng ba biểu mẫu cú pháp để tạo truy vấn con:

so sánh [ANY | TẤT CẢ | SOME] (sqlstatement)

biểu thức [NOT] IN (sqlstatement)

[KHÔNG] EXISTS (sqlstatement)

Truy vấn con có các phần sau:

Phần

Mô tả

So sánh

Một biểu thức tử so sánh và so sánh biểu thức với kết quả của truy vấn con.

biểu thức

Một biểu thức mà tập kết quả của truy vấn con được tìm kiếm.

sqlstatement

Câu lệnh SELECT, theo cùng định dạng và quy tắc như bất kỳ câu lệnh SELECT nào khác. Dấu ngoặc đơn phải được đặt trong dấu ngoặc đơn.


Chú thích

Bạn có thể sử dụng truy vấn con thay vì biểu thức trong danh sách trường của câu lệnh SELECT hoặc trong mệnh đề WHERE hoặc HAVING. Trong truy vấn con, bạn sử dụng câu lệnh SELECT để cung cấp một hoặc nhiều giá trị cụ thể để đánh giá trong biểu thức mệnh đề WHERE hoặc HAVING.

Sử dụng vị từ ANY hoặc SOME, đồng nghĩa, để truy xuất các bản ghi trong truy vấn chính thỏa mãn so sánh với mọi bản ghi được truy xuất trong truy vấn con. Ví dụ sau đây trả về tất cả các sản phẩm có đơn giá lớn hơn sản phẩm bất kỳ được bán với mức chiết khấu từ 25 phần trăm trở lên:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Sử dụng xác thực ALL để chỉ truy xuất những bản ghi trong truy vấn chính thỏa mãn so sánh với tất cả các bản ghi được truy xuất trong truy vấn con. Nếu bạn đã thay đổi ANY thành ALL trong ví dụ trước, truy vấn sẽ chỉ trả về những sản phẩm có đơn giá lớn hơn tất cả các sản phẩm được bán với mức chiết khấu từ 25 phần trăm trở lên. Điều này là hạn chế hơn nhiều.

Sử dụng vị từ IN để chỉ truy xuất những bản ghi trong truy vấn chính mà một số bản ghi trong truy vấn con chứa giá trị bằng nhau. Ví dụ sau đây trả về tất cả các sản phẩm có mức chiết khấu từ 25 phần trăm trở lên:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Ngược lại, bạn có thể sử dụng NOT IN để chỉ truy xuất những bản ghi trong truy vấn chính mà không có bản ghi nào trong truy vấn con chứa giá trị bằng nhau.

Dùng vị từ EXISTS (với từ not reserved tùy chọn) trong so sánh true/false để xác định xem truy vấn con có trả về bất kỳ bản ghi nào không.

Bạn cũng có thể sử dụng biệt danh tên bảng trong truy vấn con để tham chiếu đến các bảng được liệt kê trong mệnh đề FROM bên ngoài truy vấn con. Ví dụ sau đây trả về tên của những nhân viên có lương bằng hoặc lớn hơn mức lương trung bình của tất cả nhân viên có cùng chức danh. Bảng Nhân viên được cung cấp biệt danh "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

Trong ví dụ trên đây, tùy chọn từ dành riêng AS.

Một số truy vấn con được cho phép trong truy vấn chéo bảng — cụ thể là, dưới dạng vị từ (các truy vấn trong mệnh đề WHERE). Truy vấn con dưới dạng đầu ra (những truy vấn trong danh sách SELECT) không được phép trong truy vấn chéo bảng.



Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×