SQL - 选择最近的前一天

时间:2016-12-13 12:01:04

标签: mysql sql

我有一个数据库表,其中包含每个患者的一个或多个条目。这些包含有关测试请求的自由文本和其他信息。例如,询问患者将返回: -

TestID      PatientID   RequestMade             FreeText
1           23           13/12/2015 11:00:00    Feeling breathless
1125        23           07/04/2016 09:31:15    Unexplained fractures
2556        23           04/12/2016 16:20:21    Check liver function – on statins

在查看测试结果时,我必须提取与测试相关的请求信息,该信息将是测试之前的最后一个。结果有一个TestDate,所以测试日期为2016年4月13日14:21:30'应显示< 07/04/2016 09:31:15'的要求。我不确定如何有效地编码,因为返回患者的每个条目并对每个条目进行日期比较似乎不是解决它的最佳方法。

1 个答案:

答案 0 :(得分:0)

如果您希望在单个患者的另一个测试之前进行一个测试,那么您所寻找的测试只出现一次,那么您可以通过一个查询执行此操作为:

select t.*
from tests t
where t.patientid = 23 and
      t.requestmade < (select t2.requestmade
                       from tests t2
                       where t2.patientid = t.patientid and
                             t2.testid = ?
                      )
order by t.requestmade desc
limit 1;