Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从mysql表中选择每个变量的最新(最新)记录_Php_Mysql_Sql_Join - Fatal编程技术网

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