Cách tiếp cận hiệu quả hơn nói chung là sử dụng các hàm phân tích
SELECT hospitalcode,
name,
ward,
annualbudget
FROM (SELECT h.hospitalcode,
h.name,
w.wardno,
w.annualbudget,
rank() over (order by w.annualbudget asc) rnk
FROM hospital h
JOIN ward w
ON (h.hospitalcode = w.hospitalcode))
WHERE rnk = 1
Tuy nhiên, bạn cũng có thể sử dụng truy vấn con
SELECT h.hospitalcode,
h.name,
w.wardno,
w.annualbudget
FROM hospital h
JOIN ward w
ON (h.hospitalcode = w.hospitalcode)
WHERE w.annualbudget = (SELECT MIN(annualbudget)
FROM ward)
Cả hai phương pháp này sẽ trả về nhiều hàng nếu có nhiều phường được ràng buộc cho ngân sách thấp nhất. Với phương pháp hàm phân tích, bạn có thể sử dụng row_number
chức năng hơn là rank
để tự ý bẻ dây nếu bạn muốn trả về chính xác 1 hàng mỗi lần.