问题描述
有一个查询,该查询使用双重选择(使用最大选择)来获取具有相同“患者集ID”的多行中最新“calculation_time”列的行。如果有多行具有相同的 'patient_set_id',则应仅检索具有最新 'calculation_time' 的行。计算时间是一个日期。 到目前为止,我已经尝试过这个,但我不确定是否有更好的方法,也许使用 ORDER BY。但我对 sql 很陌生,需要知道哪一个是最快和更合适的?
SELECT median from diagnostic_risk_stats WHERE
calculation_time=(SELECT MAX(calculation_time) FROM diagnostic_risk_stats WHERE
patient_set_id = UNHEX(REPLACE('5a9dbfca-74d6-471a-af27-31beb4b53bb2',"-","")));
解决方法
您可以按如下方式使用 not exists
:
SELECT median
from diagnostic_risk_stats t
WHERE not exists
(Select 1 from diagnostic_risk_stats tt
Where t.patient_set_id = tt.patient_set_id
And tt.calculation_time > t.calculation_time)
And t.patient_set_id = UNHEX(REPLACE('5a9dbfca-74d6-471a-af27-31beb4b53bb2',"-",""));