我有一個患者表,其中包含以下列:patient_id,obs_id,obs_date。 Obs_id是臨牀觀察(如體重讀數,血壓讀數等)的ID,obs_date是觀察結果的時間。每個病人在不同的日期可以有幾個讀數......等等。目前,我有一個查詢來獲取有obs_id = 1所有患者和它們插入到一個臨時表(有兩列,patient_id,和國旗,我設置爲0這裏):SQL按日期依存關係查詢
insert into temp_table (select patient_id, 0 from patients_table
where obs_id = 1 group by patient_id having count(*) >= 1)
我也執行更新聲明的標誌設置爲1,所有患者也有obs_id = 5:
UPDATE temp_table SET flag = 1 WHERE EXISTS (
SELECT patient_id FROM patients_table WHERE obs_id = 5 group by patient_id having count(*) >=1
) v WHERE temp_table.patient_id = v.patient_id
我的問題是:如何修改兩個查詢(不合並,或通過聲明移除組),這樣我可以回答以下問題: 「得到obs_id = 1後obs_id = 5的所有患者」。如果我在每個查詢的選擇中添加min(obs_date)或max(obs_date),然後向第二個查詢添加「AND v.obs_date> temp_table.obs_date」,那麼是否正確?
我不需要通過聲明或組合來移除組的原因是因爲這些查詢是由代碼生成器(來自Web應用程序)生成的,並且我想要修改而不會混淆代碼生成器或重新寫它。
非常感謝,
謝謝,我完全理解。但是,我沒有實現該代碼生成器,我只是修改別人的代碼。改變整體代碼生成策略對我來說不是一種選擇,這就是爲什麼我要爲此付出努力。 – wsb3383 2010-08-20 16:36:43