mysql的UUID获取上一篇下一篇(上一条 下一条)应用实例[通俗易懂]

mysql的UUID获取上一篇下一篇(上一条 下一条)应用实例[通俗易懂]先讲原理:有上一篇下一篇(上一条下一条),肯定是在:搜索条件下,排序规则固定的场景下,得到的一个查询集合(列表)中的一个效果。1.我们在这两个条件(搜索条件where排序规则order),给查询结果集给利用rownum(一个顺序自增的标号)2.查询出目标uuid的rownum值x.3.查询上一条和下一条:rownum=x-1的uuid得到上一条rownum=x+1的uuid得到下一条实际应用:一个固定的检索条件固定排序的查询:SELECT bn.*FROM b

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

先讲原理:

有上一篇下一篇(上一条 下一条),肯定是在:搜索条件下,排序规则固定的场景下,得到的一个查询集合(列表)中的一个效果。
1.我们在这两个条件(搜索条件where 排序规则order),给查询结果集给利用rownum(一个顺序自增的标号)
2.查询出目标uuid的rownum值x.
3.查询上一条和下一条: rownum = x-1的uuid 得到上一条 rownum = x+1的uuid 得到下一条


实际应用:

一个固定的检索条件 固定排序的查询:

SELECT
	bn.*
FROM
	base_notice bn
LEFT JOIN (
	SELECT
		GROUP_CONCAT(userinfo.STR_NAME) AS toUserNames,
		GROUP_CONCAT(touser.STR_GUID) AS addresseeGuids,
		GROUP_CONCAT(touser.STR_USER) AS touserIds,
		GROUP_CONCAT(touser.is_read) AS isReads,
		notice.STR_GUID AS noticeId
	FROM
		base_notice notice
	LEFT JOIN base_notice_addressee touser ON touser.STR_NOTICE_GUID = notice.STR_GUID
	LEFT JOIN base_user userinfo ON touser.str_user = userinfo.STR_GUID
	WHERE
		notice.STR_CREATE_USER_ID = '1367646365085077505'
	AND notice.STR_TYPE = 2
	AND (
		touser.IS_DELETE = 0
		AND touser.IS_ENABLE = 1
	)
	GROUP BY
		notice.STR_GUID
) tempT1 ON bn.STR_GUID = tempT1.noticeId
WHERE
	bn.IS_DELETE = 0
AND bn.IS_ENABLE = 1
AND bn.STR_CREATE_USER_ID = '1367646365085077505'
ORDER BY
	bn.DT_GET_DATE DESC

在这里插入图片描述
增加rownum:(对比上面sql与下面sql 加入 –标记的操作)
说明:实际应用中通常获取上一条 下一条的uuid即可 这里我结果集 我增加了rowNum后,只查询了uuid
这个代码只观察标记位置的实际操作下面附上不带“–”的效果和结果:

-- SELECT
-- 	rownum AS rowNum,
-- 	STR_GUID AS strGuid
-- FROM
-- 	(
		SELECT
-- 			@rownum :=@rownum + 1 AS rownum,
			bn.*
		FROM
-- 			(SELECT @rownum := 0) r,
			base_notice bn
		LEFT JOIN (
			SELECT
				GROUP_CONCAT(userinfo.STR_NAME) AS toUserNames,
				GROUP_CONCAT(touser.STR_GUID) AS addresseeGuids,
				GROUP_CONCAT(touser.STR_USER) AS touserIds,
				GROUP_CONCAT(touser.is_read) AS isReads,
				notice.STR_GUID AS noticeId
			FROM
				base_notice notice
			LEFT JOIN base_notice_addressee touser ON touser.STR_NOTICE_GUID = notice.STR_GUID
			LEFT JOIN base_user userinfo ON touser.str_user = userinfo.STR_GUID
			WHERE
				notice.STR_CREATE_USER_ID = '1367646365085077505'
			AND notice.STR_TYPE = 2
			AND (
				touser.IS_DELETE = 0
				AND touser.IS_ENABLE = 1
			)
			GROUP BY
				notice.STR_GUID
		) tempT1 ON bn.STR_GUID = tempT1.noticeId
		WHERE
			bn.IS_DELETE = 0
		AND bn.IS_ENABLE = 1
		AND bn.STR_CREATE_USER_ID = '1367646365085077505'
		ORDER BY
			bn.DT_GET_DATE DESC
-- 	) tempT
 SELECT
 	rownum AS rowNum,
 	STR_GUID AS strGuid
 FROM
 	(
		SELECT
 			@rownum :=@rownum + 1 AS rownum,
			bn.*
		FROM
 			(SELECT @rownum := 0) r,
			base_notice bn
		LEFT JOIN (
			SELECT
				GROUP_CONCAT(userinfo.STR_NAME) AS toUserNames,
				GROUP_CONCAT(touser.STR_GUID) AS addresseeGuids,
				GROUP_CONCAT(touser.STR_USER) AS touserIds,
				GROUP_CONCAT(touser.is_read) AS isReads,
				notice.STR_GUID AS noticeId
			FROM
				base_notice notice
			LEFT JOIN base_notice_addressee touser ON touser.STR_NOTICE_GUID = notice.STR_GUID
			LEFT JOIN base_user userinfo ON touser.str_user = userinfo.STR_GUID
			WHERE
				notice.STR_CREATE_USER_ID = '1367646365085077505'
			AND notice.STR_TYPE = 2
			AND (
				touser.IS_DELETE = 0
				AND touser.IS_ENABLE = 1
			)
			GROUP BY
				notice.STR_GUID
		) tempT1 ON bn.STR_GUID = tempT1.noticeId
		WHERE
			bn.IS_DELETE = 0
		AND bn.IS_ENABLE = 1
		AND bn.STR_CREATE_USER_ID = '1367646365085077505'
		ORDER BY
			bn.DT_GET_DATE DESC
 	) tempT

在这里插入图片描述

然后假设我们需要查询uuid =“100” 的上一条和下一条,只需要在上面sql后面增加 where条件查询
where strGuid=’100’的rowNum值。

  where tempT.STR_GUID='100'

在这里插入图片描述
我们看到 strGuid=‘100’ 他的rownum=2 很容易,我们知道他的上一条rowNum=1 下一条rowNum=3
于是 我们修改上面sql语句的条件

   where rownum in (1,3);

在这里插入图片描述
从结果集中我们看出了:上一条uuid 下一条uui都有了

当前被查的uuid的rownum=1 即:第一条的结果集

where rownum in (0,2);

在这里插入图片描述
当前被查的uuid的rownum=3 即:最后一条的结果集

where rownum in (2,4);

在这里插入图片描述

第一条和最后一条怎么辨别?

我们利用查询条件 当前被查的uuid rownum=x

得到结果集 rownum= x-1 strGuid非null 即:上一条有值 得到结果集 rownum= x+1
strGuid非null 即:下一条有值

上一条 null 下一条非null :当前为第一条 上一条 非null 下一条非null :非头条和末条的中间中的一条 上一条 非null
下一条null :当前为最后一条 上一条null 下一条null:非当前条件内的查询记录。

上一条uuid 下一条uuid 当前被查询uuid结论
null 非null 第一条
非null 非null 非头条和末条的中间中的一条
非null null 最后一条
null null :非当前条件内的查询记录

以上。你学废了吗!?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169242.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 中国著名的D版和激活成功教程软件下载网站(转)「建议收藏」

    中国著名的D版和激活成功教程软件下载网站(转)「建议收藏」中国著名的D版和激活成功教程软件下载网站 (1)无忧软件网 – 不可多得的激活成功教程软件下载基地,附有无忧书库,无忧字体,代码基地,无忧教学,**园地,完全游戏http://www.51soft.com/ ;(2)精品软件秀 – 软件下载网页,可惜更新太慢!分类清楚,更新及时,也值得一看。http://www.ohsoft.com/ ;(3)163软件园 – 163软件园是国内著名的软件网站,网站定位是提供“提

  • RX500系列显卡挖矿修改BIOS教程

    RX500系列显卡挖矿修改BIOS教程本教程用到的工具:atiflash274(刷BIOS和提取BIOS)源链接:https://www.techpowerup.com/download/ati-atiflash/百度云链接:http://pan.baidu.com/s/1slJh4xZ密码:3rwbPolarisBiosEditor-master(修改BIOS)源链接:https://github.

  • 查看Linux端口占用,并kill掉相关进程「建议收藏」

    话不多说,本文介绍Linux常规操作:查看端口占用进程,根据PIDkill掉相关进程。另外补充:根据程序名查看进程PID。首先,两条命令,lsof命令和netstat命令。方式一:lsof命令1、查看占用端口进程的PID:lsof-i:{端口号}2、根据PIDkill掉相关进程:kill-9{PID}方式二:net…

  • n皇后问题 回溯法java_Java解决N皇后问题

    n皇后问题 回溯法java_Java解决N皇后问题问题描述:   要求在一个n×n的棋盘上放置n个皇后,使得它们彼此不受攻击。   按照国际象棋的规则,一个皇后可以攻击与之同一行或同一列或同一斜线上的任何棋子。   因此,n皇后问题等价于:要求在一个n×n的棋盘上放置n个皇后,使得任意两个皇后不在同一行或同一列或同一斜线上。一个皇后的攻击范围:                                    n皇后的解空间—完全n叉树…

  • java 入门面试题

    java 入门面试题起因焦虑。每次自己想跳槽的时候,内心总是担忧着那些面试题怎么解答。 很多问题在实际工作中并不会遇到,没有实际的解决问题经验,看过也记不住。 假如我明年需要换工作,那现在把下次的面试准备工作,拆分、融入到平时的每天中,会不会取得更满意的offer?目标收集网上各种经典的java面试题 做出答案,分享出去,和猿友讨论,不断进步 扩大知识图谱,扎实基础,梳理知识脉络…

  • sql服务器系统时间格式,SQL Server 日期格式和日期操做

    sql服务器系统时间格式,SQL Server 日期格式和日期操做SQLServer发展至今,关于日期的格式的控制方法,有传统的方法,好比CONVERT(),也有比较便利的新方法,好比FORMAT();一样,关于日期的操做函数,也分为传统方法:DATEADD()等,也有便利的新方法:EOMonth()等。sql一,日期的格式化格式化是指把日期类型(Date)、日期和时间类型转化为字符类型,一般使用CONVERT()和FORMAT()函数。express1,传统…

    2022年10月19日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号