加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)

发布时间:2020-12-12 09:18:00 所属栏目:MsSql教程 来源:网络整理
导读:在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库的术语来说,就是查找出每组中的一条数据。下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据。 例子 我

在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库的术语来说,就是查找出每组中的一条数据。下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据。

例子

我们要从上面获得的有效数据为:

对应的sql语句如下所示:

下面给大家介绍oracle查询取出每组中的第一条记录

oracle查询:取出每组中的第一条记录

按type字段分组,code排序,取出每组中的第一条记录

方法一:

注意:select 后面的列要在group by 子句中,或是用聚合函数包含,否则会有语法错误。

方法二:



这里涉及到的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.

LIMIT 接受一个或两个数字参数。

参数必须是一个整数常量。

如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,

第二个参数指定返回记录行的最大数目。

初始记录行的偏移量是 0(而不是 1)

主意:limit 用于 having 之后

自己的示例:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读