我需要获得两个字段匹配的最新记录
所以,这个数据..
id | a | b | date | label
---------------------------------------
1 | 10 | 15 | 954576000 | hide
2 | 10 | 15 | 1097650800 | show
3 | 20 | 25 | 1072252800 | hide
4 | 20 | 25 | 1113202800 | show
5 | 35 | 60 | 1027062000 | show
6 | 39 | 63 | 1012464000 | show
应该归还......
id | a | b | date | label
---------------------------------------
2 | 10 | 15 | 1097650800 | show
4 | 20 | 25 | 1113202800 | show
5 | 35 | 60 | 1027062000 | show
6 | 39 | 63 | 1012464000 | show
这个查询很简单,如果我只是检查一个字段,效果很好: SELECT * FROM mytable GROUP BY a HAVING MAX(date)
但是,当两个字段匹配时,我一直很难弄清楚如何获取最新记录。
注意:日期是在UNIX时间
答案 0 :(得分:1)
如果您想要" a"的最新记录,请使用join
和group by
:
select t.*
from table t join
(select a, max(date) as maxdate
from table t
group by a
) tt
on t.a = tt.a and t.date = tt.maxdate;
having max(date)
的语法不起作用。它没有做你的想法,它确实没有意义。
编辑:
如果需要匹配两个字段,请将它们包含在子查询中:
select t.*
from table t join
(select a, b, max(date) as maxdate
from table t
group by a
) tt
on t.a = tt.a and t.b = tt.b and t.date = tt.maxdate;