Bạn không cần một truy vấn con tương quan cho những gì bạn đang làm. Đây là một cách dựa trên truy vấn của bạn:
select CustomerNum, count(CustomerNum)
from Rentals R
group by CustomerNum
having count(CustomerNum) = (select max(cnt)
from (select CustomerNum, count(CustomerNum) as cnt
from Rentals
group by CustomerNum
) rc
);
Tôi có xu hướng chuyển truy vấn con đến from
mệnh đề và sử dụng truy vấn con:
select rc.*
from (select CustomerNum, count(CustomerNum) as cnt
from Rentals R
group by CustomerNum
) rc join
(select max(cnt) as maxcnt
from (select CustomerNum, count(CustomerNum) as cnt
from Rentals
group by CustomerNum
) rc
) m
on rc.cnt = m.maxcnt;
Đây là SQL tiêu chuẩn và sẽ hoạt động trong cả hai hệ thống. Trong thực tế, tôi có thể tìm cách sử dụng top
hoặc row_number()
trên SQL Server 2008.