昨天面试一个数据库的问题,不会答,回来研究了很久,没有结果,果断求助大家
现有表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条记录