表结构示例
VarName Date Machine
-------------------------
A date1 machine1
B date2 machine1
A date3 machine2
C date4 machine2
A date5 machine1
C date6 machine1
A date7 machine1
我试图从数据库中过滤的内容应如下所示:
VarName Date Machine
-------------------------
A date1 machine1
B date2 machine1
C date6 machine1
每个变量只能选择一次,并且每个变量必须是特定日期之前的最新记录。我的语句条件是( WHERE date <= 'some date' AND machine='SomeMachineName'
)。 Join 语句可能是解决方案,但我尝试过的任何方法都没有运气。
感谢您的帮助
最佳答案
一种方法在 where
子句中使用相关子查询:
select t.*
from t
where t.date = (select max(t2.date)
from t t2
where t2.varname = t.varname and
t2.date <= @date
);
为了提高性能,您需要在 t(varname, date)
上建立索引。
关于php - 从 mysql 表中选择每个变量的最新(截至某个日期)记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45483007/