Subquery trong SQL (Nested query) hay còn được gọi là truy vấn nội bộ, là khái niệm để mô tả việc một truy vấn sử dụng kết quả của một truy vấn nội bộ khác trong mệnh đề truy vấn WHERE của các hệ thống sử dụng cấu trúc truy vấn dữ liệu theo ngôn ngữ SQL. Các kết quả trả về của truy vấn con trong một câu lệnh truy vấn thường được sử dụng để đặt giới hạn và hạn chế kết quả trả về của truy vấn cha trong những query phức tạp cần tham chiếu đến dữ liệu của nhiều bảng với điều kiện kết lọc phức tạp mà 1 query không thể nào xử lý được.
Là một trong những kỹ thuật truy vấn sql nâng cao, tuy nhiên nested query thường không được sử dụng rộng rãi và hạn chế trong các tác vụ truy vấn dữ liệu phức tạp cần đáp ứng trả về nhanh. Một trong các tiêu chí tối ưu trong việc quản lý các hệ sơ sở dữ liệu quan hệ RDBMS (relational database management system).
Cú pháp truy vấn phụ
Thường không có tài liệu rõ ràng về cấu trúc trong việc tạo ra một sub query, tuy nhiên đa phần các subquery thường được đặt trong cặp đấu “()” và được bỏ trong mệnh đề WHERE của truy vấn cha gần nhất của nó.
SELECT column-names FROM table-name1 WHERE value IN (SELECT column-name FROM table-name2 WHERE condition)
Hoặc sử dụng thẳng trong mệnh đề SELECT của truy vấn cha
SELECT column1 = (SELECT column-name FROM table-name WHERE condition), column-names FROM table-name WEHRE condition
Ví dụ về một trường hợp sử dụng truy vấn subquery với yêu cầu trả về kết quả các sản phẩm được bán có Quantity >100

SELECT ProductName FROM Product WHERE Id IN (SELECT ProductId FROM OrderItem WHERE Quantity > 100)
Kết quả trả về sẽ như mẫu dữ liệu sau:
PoductName Guaraná Fantástica Schoggi Schokolade Chartreuse verte Jack's New England Clam Chowder Rogede sild Manjimup Dried Apples Perth Pasties