日期:2014-05-17  浏览次数:20459 次

昨天面试一个数据库的问题,不会答,回来研究了很久,没有结果,果断求助大家
现有表A,字段region(地区),eventss(事件),times(时间),查询每个region(地区)的最新eventss(事件),比如有a,b,c三个地区。
下面是我同学讨论的:select region, event, time from 表名 where time in (select min(time) group by region);
 

但是有一些漏洞,如果时间有相同的,可能会选出比较麻烦的结果,小弟现求正确的sql代码,顺便问mysql的代码怎么实现,谢谢大家
面试 数据库 mysql sql

------解决方案--------------------
select * from tb a where not exists(select 1 from tb b where a.region=b.region and a.times<b.times)


------解决方案--------------------
最新应该是最大时间而不是最小
select region, event, time from tb as a 
where time=(select max(time) from tb where region=a.region)
------解决方案--------------------
参考;
查每个分组前N条记录