下面输出的get的确切sql查询是什么?



这是我的订阅表

active hospitalIdtbody> <<tr>2
idpackageIdpackageDurationexpireDate
107232021-01-22
07112021-03-02
318612021-03-08

你只需要把你现有的查询和连接回你的hospital表。

我也会使用exists而不是not in,并且在显示的用例中,我看不到packageHospital上别名为p的外部连接的需要,您不使用它。

试试这个

select h.id, x.MaxExpiredDate, h.<other desired columns>, sp.packageDuration, sp. packageId
from (
select h.id, Max(sp.expireDate) MaxExpiredDate
from hospital h 
left join subscribedPackage sp on sp.hospitalId = h.id
where h.hospital_active != 0 
and not exists (select * from subscribedPackage s where s.hospitalId=h.id and s.active = 1 )
group by h.id
)x
join hospital h on h.id=x.id
join subscribedPackage sp on sp.hospitalId = h.id