SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)
sqlserver 获取每组中的第一条记录
在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库的术语来说,就是查找出每组中的一条数据。下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据。
例子
我们要从上面获得的有效数据为:
对应的sql语句如下所示:
select * from t1 t where id = (select top 1 id from t1 where grp = t.grp order by createtime desc )
下面给大家介绍oracle查询取出每组中的第一条记录
oracle查询:取出每组中的第一条记录
按type字段分组,code排序,取出每组中的第一条记录
方法一:
select type,min(code) from group_info group by type;
注意:select 后面的列要在group by 子句中,或是用聚合函数包含,否则会有语法错误。
方法二:
select * from( select z.type , z.code ,row_number() over(partition by z.type order by z.code) as code_id from group_info z ) where code_id =1;
这里涉及到的over()是oracle的分析函数
参考sql reference文档:
analytic functions compute an aggregate value based on a group of rows. they differ from aggregate functions in that they return multiple rows for each group.
analytic functions are the last set of operations performed in a query except for the final order by clause. all joins and all where , group by , and having clauses are completed before the analytic functions are processed. therefore, analytic functions can appear only in the select list or order by clause.
语法结构:
analytic_function ([ arguments ]) over
(analytic_clause)
其中analytic_clause结构包括:
[ query_partition_clause ]
[ order_by_clause [ windowing_clause ] ]
也就是:函数名( [ 参数 ] ) over( [ 分区子句 ] [ 排序子句 [ 滑动窗口子句 ] ])
这里partition by 引导的分区子句类似于聚组函数中的group by,排序子句可看成是select语句中的order by.
mysql 中只获取1条数据
select * from 表 limit 0, 10
limit 接受一个或两个数字参数。
参数必须是一个整数常量。
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,
第二个参数指定返回记录行的最大数目。
初始记录行的偏移量是 0(而不是 1)
主意:limit 用于 having 之后
自己的示例:
select count(1),tpc_equipment_code from tb_parts_consume group by tpc_equipment_code order by count(1) desc limit 1;
推荐阅读
-
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
-
使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法
-
oracle 使用sql获取数据库表、表的字段的多种方法
-
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
-
SQL语句分组获取记录的第一条数据的方法
-
mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享
-
SQL语句分组获取记录的第一条数据的方法
-
Sqlserver 如何获取每组中的第一条记录_MySQL
-
Sqlserver 如何获取每组中的第一条记录_MySQL
-
SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)