iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql中类似oracle的over() row_number()的功能实现
  • 897
分享到

mysql中类似oracle的over() row_number()的功能实现

2024-04-02 19:04:59 897人浏览 泡泡鱼
摘要

从网上找了很多资料,参考了如下链接,完成了一个需求:下一行的开始时间,作为上一行开始时间的结束时间。 https://www.cnblogs.com/yhzh/p/6222580.html 以下是自己做的

从网上找了很多资料,参考了如下链接,完成了一个需求:下一行的开始时间,作为上一行开始时间的结束时间。
https://www.cnblogs.com/yhzh/p/6222580.html

以下是自己做的,可以忽略
-- 说明如下:
-- 先按照设备号,用户id,book_id,阅读时间 排序
-- 然后按照设备号分组,对组内的数据按时间 依次编号


-- 首先last_device_num 为空,
-- 第一行判断 device_num = null,所以赋值1,并把第一行的device_num 传递给last_device_num;
-- 第二行时,判断device_num是否等于上一行的device_num(即last_device_num),如果等,则递增,否则为1。
-- 第二行,纯粹是用来赋值。


UPDATE 
  xxx p,
  (SELECT 
    n.id,
    n.begin_time,
    m.begin_time AS end_time,
    TIMESTAMPDIFF(
      SECOND,
      n.begin_time,
      m.begin_time
    ) AS interva 
  FROM
    (SELECT 
      id,
      device_num,
      begin_time,
      IF(
        @last_device_num = a.device_num,
        @rank := @rank + 1,
        @rank := 1
      ) AS row_number,
      @last_device_num := a.device_num 
    FROM
      (SELECT 
        * 
      FROM
        xxx
      ORDER BY device_num,
        user_id,
        book_id,
        begin_time ASC) a,
      (SELECT 
        @rownum := 0,
        @last_device_num := NULL,
        @rank := 0) b) m 
    RIGHT JOIN 
      (SELECT 
        id,
        device_num,
        begin_time,
        IF(
          @last_device_num1 = a.device_num,
          @rank1 := @rank1 + 1,
          @rank1 := 2
        ) AS row_number,
        @last_device_num1 := a.device_num 
      FROM
        (SELECT 
          * 
        FROM
          xxx
        ORDER BY device_num,
          user_id,
          book_id,
          begin_time ASC) a,
        (SELECT 
          @rownum1 := 0,
          @last_device_num1 := NULL,
          @rank1 := 1) b) n 
      ON m.row_number = n.row_number 
      AND m.device_num = n.device_num) q 
SET
  p.`end_time` = q.end_time,
  p.`read_time` = q.interva 
WHERE p.id = q.id 





您可能感兴趣的文档:

--结束END--

本文标题: mysql中类似oracle的over() row_number()的功能实现

本文链接: https://www.lsjlt.com/news/47654.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql中类似oracle的over() row_number()的功能实现
    从网上找了很多资料,参考了如下链接,完成了一个需求:下一行的开始时间,作为上一行开始时间的结束时间。 https://www.cnblogs.com/yhzh/p/6222580.html 以下是自己做的...
    99+
    2024-04-02
  • Oracle中实现类似于Mysql中的Field()函数功能
    目录理论知识1. mysql中的Filed() 函数2. oracle中的Decode()函数3. Oracle中的row_number实战演练Mysql 的 Filed使用Oracle的Decodeoracle的row...
    99+
    2023-06-08
    Oracle中实现实现类似Field()函数 Oracle decode() Oracle row_number
  • MySQL5.7 实现类似 MySQL8.0 中 row_number() over(partition by ... order by ...) 函数的分组排序编号效果
    示例 现在这里有一张用户表 user,里面包含以下字段:ID 主键、USERNAME 用户名、PASSWORD 密码、COMPANY 公司、DEPT 部门、CREATE_TIME 创建时间。 IDUS...
    99+
    2023-09-24
    数据库 sql mysql
  • MySQL中怎么实现rownum功能类似的语句
    本篇内容主要讲解“MySQL中怎么实现rownum功能类似的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中怎么实现rownum功能类似的语句”吧...
    99+
    2024-04-02
  • 如何在MySQL中实现类似PL/SQL的编程功能
    在MySQL中实现类似PL/SQL的编程功能不仅可以提高数据库操作的灵活性和效率,还能更好地实现复杂业务逻辑处理。本文将介绍如何在MySQL中使用存储过程、函数和触发器等功能来实现类似...
    99+
    2024-03-15
    编程 mysql pl/sql sql语句
  • 如何在MySQL中实现类似PL/SQL的编程功能
    在MySQL中实现类似PL/SQL的编程功能不仅可以提高数据库操作的灵活性和效率,还能更好地实现复杂业务逻辑处理。本文将介绍如何在MySQL中使用存储过程、函数和触发器等功能来实现类似...
    99+
    2024-03-15
    编程 mysql pl/sql sql语句
  • python实现类似awk的简单功能
    命令行的awk很方便,但处理灵活一点的话对awk不熟,深入学习又没太大必要,用python做个简单的,复杂的话也用python脚本实现,程序的一致性更好。 #!/usr/bin/python #coding:utf-8 import ...
    99+
    2023-01-31
    类似 简单 功能
  • Mysql似oracle分析函数sum over的实现方法是什么
    这篇文章主要介绍“Mysql似oracle分析函数sum over的实现方法是什么”,在日常操作中,相信很多人在Mysql似oracle分析函数sum over的实现方法是什么问题上存在疑惑,小编查阅了各式...
    99+
    2024-04-02
  • HTML中如何实现类似include功能
    在HTML中,可以使用JavaScript实现类似include的功能。具体步骤如下:1. 创建一个用于加载外部HTML文件的Jav...
    99+
    2023-08-18
    HTML
  • MYSQL 中 ROW_NUMBER 的实现
            由于mysql没有 row_number函数实现,然后我们后台表里没给可以排序的字段,考虑用mysql实现一个row_number, 由于想使用视图进行实时展示,但是row_number在视图中不生效,所有我们最后还是找了后...
    99+
    2023-09-02
    mysql sql 数据库
  • MySQL实现类似Oracle序列的方案
    MySQL实现类似Oracle的序列 Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自...
    99+
    2024-04-02
  • PostgreSQL如何实现类似CURRENT_DATE函数的功能
    小编给大家分享一下PostgreSQL如何实现类似CURRENT_DATE函数的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • HTML怎么实现类似include功能
    在HTML中,没有内置的include功能,但可以使用JavaScript来实现类似的功能。一种方法是使用jQuery库中的load...
    99+
    2023-08-19
    HTML
  • 是否可以在Go语言中实现类似的功能?
    编程网今天将给大家带来《是否可以在Go语言中实现类似的功能?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给...
    99+
    2024-04-04
  • mysql如何实现类似于oracle的merge语句
    小编给大家分享一下mysql如何实现类似于oracle的merge语句,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 定期更新一个表A,但是表的数据来自于另一张表B。 A表和B表...
    99+
    2024-04-02
  • MySQL是否支持类似PL/SQL的功能
    MySQL是否支持类似PL/SQL的功能,需要具体代码示例 MySQL是一种常见的关系型数据库管理系统,被广泛应用于各种类型的应用程序开发中。与Oracle的PL/SQL相比,MySQ...
    99+
    2024-03-15
    sql语句
  • AJax如何实现类似百度搜索栏的功能
    小编给大家分享一下AJax如何实现类似百度搜索栏的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实习过程中需要用到异步提交功能,于是试着去了解了一下ajax,...
    99+
    2023-06-08
  • 为何在Go语言中难以实现类似集合的功能?
    在Go语言中难以实现类似集合的功能,是一个困扰许多开发者的问题。相比其他编程语言如Python或Java,Go语言并没有内置的集合类型,如set、map等,这给开发者在实现集合功能时带...
    99+
    2024-04-02
  • 利用 SpringBoot 在 ES 中实现类似连表查询功能
    目录一、摘要二、项目实践2.1添加依赖2.2配置 es 客户端2.3初始化索引结构2.4向 es 中同步文档数据2.5内嵌对象查询三、小结一、摘要 在上篇文章中,我们详细的介绍了如何...
    99+
    2024-04-02
  • javascript怎么实现类似百度分享功能
    百度分享是一个非常流行的社交分享插件,允许网站的访问者方便地分享网站上的内容。这个功能非常受欢迎,因为它允许用户快速地将他们所喜欢的内容分享到不同的社交网络,例如微信、微博、QQ等。但是,你知道吗?你也可以使用javascript实现类似的...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作