Truy vấn lồng nhau, truy vấn con Subquery
Một truy vấn lồng nhau là một truy vấn nằm trong truy vấn khác. Để hiểu hãy xem ví dụ sau:
Lấy giá trung bình của sản phẩm
SELECT avg(Gia) AS GiaTB FROM Sanpham
Chạy truy vấn trên SQLite dữ liệu mẫu
GiaTB |
---|
144610.3896103896 |
Có một file CSDL mẫu dạng SQLite, bạn có thể tải về thực hành: CSDL SQLite mẫu. Hoặc Chạy SQL Online
Tiếp theo bạn muốn lấy thông tin sản phẩm có giá lớn hơn giá trung bình này, nếu không có sử dụng truy vấn lồng nhau thì có thể viết
SELECT SanphamID, TenSanPham, Gia FROM Sanpham WHERE Gia > 144610.3896103896 ORDER BY Gia
Sử dụng truy vấn lồng nhau Subquery
Coi câu truy vấn lấy giá trị trung bình ở trên có đưa vào dấu ()
: (SELECT avg(Gia) AS GiaTB FROM Sanpham) như là tham số để sử dụng cho truy vấn thứ 2.
Vậy tiến hành thay tham số giá trị bằng truy vấn này sẽ có được truy vấn lồng nhau
SELECT SanphamID, TenSanpham, Gia FROM Sanpham WHERE Gia > (SELECT avg(Gia) AS GiaTB FROM Sanpham) ORDER BY Gia
SanphamID | TenSanpham | Gia |
---|---|---|
5 | Bột cần tây sấy lạnh | 145000 |
75 | Thùng Sữa đậu nành Fami | 145000 |
10 | Tôm thịt đông lạnh size 31/40 Đôi Đũa Vàng gói 450g | 150000 |
17 | Combo 5 hộp pate thịt gà và que cua | 175000 |
59 | Sữa Bột Nguyên Kem Dutch Lady | 180000 |
40 | Cua Thịt Cà Mau (Kg) | 500000 |