sql 每个编号按时间排序取前两条数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 每个编号按时间排序取前两条数据相关的知识,希望对你有一定的参考价值。
编号 时间
CD5FAF65-7F55-401D-965B-120CB38933D1 2013-08-14 06:29:36.000
CD5FAF65-7F55-401D-965B-120CB38933D1 2013-08-14 06:38:30.000
E30044B3-793A-43EB-B900-192FBE1EA89B 2013-08-14 14:41:36.000
E30044B3-793A-43EB-B900-192FBE1EA89B 2013-08-14 14:41:39.000
E30044B3-793A-43EB-B900-192FBE1EA89B 2013-08-14 14:41:42.000
每个编号按时间去前两条数据
from
(select 编号,时间,row_number() over (partition by 编号 order by 时间) rn from 表名) t
where t.rn <=2
sqlserver或oracle就用上边的吧
参考技术A 根据你的要求:select * from (select 编号,时间,row_number() over (partition by 编号order by 时间) num from t_d_accountbank)t where t.num<=2本回答被提问者采纳 参考技术B 我们看到的是这种格式的字符串2009-10-18
10:49:25.00
其实在数据库内部记忆的是从1900到现在的毫秒数
所以你排序的时候,是以。1900年到指定时期的毫秒数大小来排序的 参考技术C SELECT TOP 2 * FROM table_name ORDER BY datetime desc
TOP 2 是前两条数据
table_name 是表名
datetime是时间字段名
desc 是排序方式降序排列,asc 升序,默认升序! 参考技术D 可以用楼上提供的窗口函数Row_Number
SQL语句如何取前10条,10-30条记录?
如题,谢谢
常用几种数据库,取前10条记录的sql语句写法。
access:
select top (10) * from table1 where 1=1
db2:
select column from table where 1=1 fetch first 10 rows only
mysql:
select * from table1 where 1=1 limit 10
sql server:
读取前10条:select top (10) * from table1 where 1=1
读取后10条:select top (10) * from table1 order by id desc
oracle:
select * from table1 where rownum<=10
取10-30条的记录:
select top 20 * from 表名 where id not in(select top 10 id from 表名)
扩展资料:
使用SQL从表中取记录。
SQL的主要功能之一是实现数据库查询。如果你熟悉Internet 引擎,那么你已经熟悉查询了。你使用查询来取得满足特定条件的信息。
多数Internet 引擎允许逻辑查询。在逻辑查询中,你可以包括特殊的运算符如AND、OR和NOT,你使用这些运算符来选择特定的记录。
如果需要扩展查询的结果,可以使用逻辑操作符OR。例如,如果执行一个搜索,搜索所有的其描述中包含Active Sever Pages OR SQL的站点,收到的列表中将包括所有其描述中同时包含两个表达式或其中任何一个表达式的站点。
如果想从搜索结果中排除特定的站点,可以使用NOT。例如,查询“Active Sever Pages ”AND NOT “SQL”将返回一个列表,列表中的站点包含Active Sever Pages,但不包含SQL。当必须排除特定的记录时,可以使用NOT。
用SQL执行的查询与用Internet搜索引擎执行的搜索非常相似。 当执行一个SQL查询时,通过使用包括逻辑运算符的查询条件,你可以得到一个记录列表。此时查询结果是来自一个或多个表。
工具/材料:以Navicat for MySQL为例。
1、首先在桌面上,点击“Navicat for MySQL”图标。
2、然后在该界面中,点击“查询”选项。
3、之后在该界面中,点击“新建查询”选项。
4、接着在该界面中,输入取前10条的sql语句“s elect * from pms_product limit 0,10”。
5、然后在该界面中,点击“运行”按钮。
6、之后在该界面中,显示成功查询到前10条记录。
7、接着在该界面中,输入取10-30条记录的sql语句“s elect * from pms_product limit 10,20”。
8、然后在该界面中,点击“运行”按钮。
9、最后在该界面中,显示成功查询到10-30条记录。
参考技术B sql server:前10条:
select top 10 * from 表 order by 需要排序的字段
10-30:
select * from
(select row_number() over (order by 需要排序的字段) as id,* from 表
)a
where id between 10 and 30
或者
select top 21 * from 表
where id not in (select top 9 * from 表 order by 需要排序的字段)
order by 需要排序的字段
oracle:
前10条:
select * from
(
select * from 表 order by 需要排序的字段
)
where rownum<=10
10-30:
select * from
(
select * from 表 order by 需要排序的字段
)
where rownum between 10 and 30
mysql:
前10条
select * from
(
select * from 表 order by 需要排序的字段
)a
limit 10
10-30条:
select * from
(
select * from 表 order by 需要排序的字段
)a
limit 10,21 参考技术C 取前10条
select top 10 * from 表名
取10-30条的记录
select top 20 * from 表名 where id not in(select top 10 id from 表名) 参考技术D with a as(
select *,row_number() over(order by ColA) rn from tabA)
select * from a where rn>=10 and rn<=30本回答被提问者采纳
以上是关于sql 每个编号按时间排序取前两条数据的主要内容,如果未能解决你的问题,请参考以下文章