sql 查数据库中时间最新的一条记录

sql 查数据库中时间最新的一条记录,第1张

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关键字

用于模糊查询,通配符有%、_、[]、[^]

%:后面可以跟零个或多个字符

_:匹配任意单个字符

[]:查询一定范围内的单个字符,包括两端数据

[^]:表示不在一定范围内的单个字符,包括两端数据

一个事务中多条查询sql是取最新数据参考以下方法

在Mysql中,没有这么便利的函数,查询了网上别人的处理方式,也测试了但是没有一个成功(可能我菜,试了好几种都没成功,等试成功再更新出来),所以自己就用了一般思路:生成序号的方式,获取10条数据;

(鉴于Mysql也没有with的用法,所以写起来有点废话,亲测:十万级别效率1s-2s,百万级别效率10s吧

-- 按日期降序并获取最大的序号

取10条,可以自定义

通过以上,就可以完成Oracle、MSsql、Mysql中,实现每个分类下取N条(最新)数据的功能。

sql如何分组选择显示最新的一条数据

首先,该问题对应的SQL如下

select 采购类别,客户,订货总额

from (select 采购类别,客户,订货总额,

row_number() over(partition by 采购类别 order by 订货总额 desc) rn

from table_name) awhere rn<=2

其次,常用数据库比如Oracle和Sqlserver都有特定函数完成分组排序的功能,如果需要显示并列的情况可以用下面另外的2个.

分别有3个类似函数:

row_number() over

这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名。也是最常用的函数,排序结果类似于1,2,3,4,5

rank() over

查出指定条件后进行一个排名,但是有一个特点。假如是对学生排名,那么实用这个函数,成绩相同的两名是并列。排序结果类似于1,2,2,4,5

dense_rank() over

比较特殊,排序结果类似于1,2,2,3,4


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6668288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存