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如何分组选择显示最新的一条数据

首先,该问题对应的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

问题问得过于简化,根据我的经验猜测,你是连续地读取表的记录,而每次读取都没重复的,只读取新添加的记录,是吧?

你最好不用table, 尽量用query,这样使用SQL处理比较简单。不过也没关系,就是多写点语句。我过去的作法是,针对表生成两个视图,第一个存储上次取来的记录,第二个是当前取到的记录数据,第三个是一和二视图相比较而得到的最新的记录,每次有取动作,都要刷新。

要点,被查询的主表或query的排序和过滤关键字字段必须是记录号或ID关键字, 保证新记录排在后面,这样读取效率絵高很多,避免反复或重复处理。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存