查询始终显示最新值

时间:2014-10-23 12:22:25

标签: mysql

我有一个简单的表格:

date         name     value

1/1/14        x        1

1/1/14        z        1

2/1/14        x        2

6/1/14        y        3

7/1/14        x        3

10/1/14       y        4

我想编写一个查询,该表格会为表中现有的每个日期返回每个姓名的所有最新值的列表。如果他们在那个日期存在 我不确定它是否可能。

因此查询输出看起来像这样

date     name    value
1/1/14    x        1
1/1/14    z        1
2/1/14    x        2
2/1/14    z        1
6/1/14    x        2
6/1/14    y        3
6/1/14    z        1
7/1/14    x        3
7/1/14    y        3
7/1/14    z        1
10/1/14    x        3
10/1/14    y        4
10/1/14    z        1

1 个答案:

答案 0 :(得分:1)

你可以这样做,虽然它需要一些复杂的查询。首先,您必须生成所有行的列表,然后您需要获取值。以下查询对第一部分使用cross join,为第二部分使用相关子查询:

select d.date, n.name,
       (select s.value
        from simple s
        where s.name = n.name and s.date <= d.date
        order by s.date desc
        limit 1
       ) as value
from (select distinct date from simple s) d cross join
     (select distinct name from simple n) n;