IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql-获取当前记录的上一条和下一条数据 -> 正文阅读

[大数据]mysql-获取当前记录的上一条和下一条数据



# 说明:雪花算法的组成:  时间戳+机器id+序列号 ,所以可以认为他是递增的


#
select id , title, lag(id,1)  over
     (order by create_at) as lagId,lead(id,1)  over
     (order by create_at) as leadId  from  ec_message   ;



# last 1460528373946335233 next 1460528876793053186
select id , title , lastId , nextId from (
              select id , title, lag(id,1)  over
     (order by id) as lastId,lead(id,1)  over
     (order by id) as nextId  from  ec_message where deleted = 0
                  ) as Temp where id  = 1460528876759498754 ;



#② 因为 雪花算法 : 时间戳+机器id+递增序列号 组成,所以 用这个思路
# last 1460528373946335233 next 1460528876793053186
select id, title,
       (select id as lastId  from ec_message
#        order by id desc limit 1 就可以 取得 最大值效果 类似于max
where deleted = 0 and sign(1460528876759498754-id) >0 order by id desc limit 1 ) as lastId,
       (select id as lastId  from ec_message
where deleted = 0 and sign(id-1460528876759498754) >0 order by id asc limit 1 ) as nextId
from ec_message
where deleted = 0
  and id = 1460528876759498754;


# last 1460528373946335233 next 1460528876793053186
select id, title,
       (select max(id) as lastId  from ec_message
#        order by id desc limit 1 就可以 取得 最大值效果 类似于max
where deleted = 0 and sign(1460528876759498754-id) >0  ) as lastId,
       (select min(id) as nextId  from ec_message
where deleted = 0 and sign(id-1460528876759498754) >0  ) as nextId
from ec_message
where deleted = 0
  and id = 1460528876759498754;


# 大于 目标id 的最小id,小于目标id 的最大id
#  将数据分成三部分 :小于目标id的,等于目标id的,大于目标id的,然后取最大,最小的id
#  说明:max(),min() 是分组后的最大最小值,select max(id) from table ,是最大的一个分组
select case
           when sign(id - 1460528876759498754) < 0 then max(id)
           when sign(id - 1460528876759498754) = 0 then id
           when sign(id - 1460528876759498754) > 0 then min(id)
           end as id

from ec_message
where deleted = 0

group by sign(id - 1460528876759498754)
order by id;



select * from ec_message where id in
(select
case
when SIGN(id-1460528876759498754)>0 THEN MIN(id)
when SIGN(id-1460528876759498754)<0 THEN MAX(id)
ELSE id
end
from ec_message
where deleted = 0
# 分组的标准
GROUP BY SIGN(id-1460528876759498754)
ORDER BY SIGN(id-1460528876759498754)
)
ORDER BY id

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:49:38  更:2021-11-17 12:51:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:04:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码