select *,max(create_time) from a
where create_time<="2017-03-29 19:30:36"
group by user_id
这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。
扩展资料:
SQL数据查询语句
1、语句语法简单归纳为:
SELECT select_list [INTO new_table_name] [FROM table_source]
[WHERE search_condition] [GROUP BY group_by_expression]
[HAVING search_condition] [ORDER BY order_expression [ASC | DESC]]
2、WITH子句用于指定临时命名的公用表达式,在单条语句(SELECT、INSERT、UPDATE、DELETE)的语句执行范围内定义。
3、LIKE关键字
用于模糊查询,通配符有%、_、[ ]、[^]
%:后面可以跟零个或多个字符
_:匹配任意单个字符
[ ]:查询一定范围内的单个字符,包括两端数据
[^]:表示不在一定范围内的单个字符,包括两端数据
如果有自动增值的id主键的话,用id比较准确,可以用
select top 1 * from tablename order by id desc
因为按照时间排序,有可能因为你的时间字段是字符型的而引起错误,这样非要用时间排序的话应该有支持的时间转换函数。
top 是通用的SQL查询语句,一般的数据库都支持的。虽然没用过orcle,不过相信肯定“有!”
select top 1 * from tablename order by 时间 desc
oracle:
select * from (select *,rownum as sn from tablename order by 时间 desc) as t where sn=1
还有:
SELECT * from tablename where 时间=(select max(时间) from tablename)
select xx from table where time = max(time)