Php 从mysql表中选择每个变量的最新(最新)记录
表结构的示例Php 从mysql表中选择每个变量的最新(最新)记录,php,mysql,sql,join,Php,Mysql,Sql,Join,表结构的示例 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
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一个方法在WHERE子句中使用相关子查询:
为了提高性能,您需要一个关于tvarname,date的索引。有一个派生表作为子查询,返回每个VarName的最后日期。加入这一结果:
select t1.*
from tablename t1
join (select VarName, max(Date) Date
from tablename
group by VarName) t2
on t1.Varname = t2.VarName and t1.Date = t2.Date
你缺少WHERE子句,见戈登的答案。因此,在发布之前花时间确保您的答案正确的重要性:-@TimBiegeleisen,是的,这也是OP应该发布查询尝试的原因之一…@jarlh,或者是我们应该拒绝发布答案直到提供足够信息的原因之一!非常感谢你。这就是我要找的
select t1.*
from tablename t1
join (select VarName, max(Date) Date
from tablename
group by VarName) t2
on t1.Varname = t2.VarName and t1.Date = t2.Date