select*,max(create_time)froma
wherecreate_time<="2017-03-2919:30:36"
groupbyuser_id
这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。
扩展资料:SQL数据查询语句
1、语句语法简单归纳为:
SELECT select_list [INTO new_table_name][FROM table_source]
[WHERE search_condition][GROUPBY group_by_expression]
[HAVING search_condition][ORDERBY order_expression [ASC|DESC]]
2、WITH子句用于指定临时命名的公用表达式,在单条语句(SELECT、INSERT、UPDATE、DELETE)的语句执行范围内定义。
3、LIKE关键字
用于模糊查询,通配符有%、_、[]、[^]
%:后面可以跟零个或多个字符
_:匹配任意单个字符
[]:查询一定范围内的单个字符,包括两端数据
[^]:表示不在一定范围内的单个字符,包括两端数据
通过查询语句select * from user where id=1
我不知道你这个username指的是不是字段,如果是要取出表中某个字段的值。
可以通过select 字段名1,字段名2 ... from user where id=1。
-- MS sql server2005以上,ORACLE
select * from (
select row_number() over ( order by starttime asc) as rownum,* from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
) a
where rownum between 2 and 10
-- 【注意( order by starttime asc)是你排序的方式asc升序,desc降序】
-- ORACLE还可以
select * from (
select rownum as n,* from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
) a
where a.n between 2 and 10
-- MYSQL,postgreSQL似乎只能标量子查询
SELECT *FROM (
SELECT a.*,(
SELECT count(*) FROM steriworkrecordb WHERE b.ID<= a.ID) AS n
from steriworkrecorda
) ts
where ts.n between 2 and 10
-- 【注意b.ID<= a.ID 其中ID换成你的主键名称】
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)