You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询同subjectId的表中指定id的上一个和下一个id

查询同subjectId的上一个和下一个ID

现有数据表

idtopicsubjectIdcontent
1Topic15con...
2topic26con...
3topic36con....
4Topic45con...
5topic56con...
6topic65con....

针对选中的subjectId=5且id=4的记录,这里提供两种查询同subjectId下上一个和下一个ID的方案:

方法一:子查询方式

这种方式兼容性强,几乎所有数据库都支持。

获取上一个ID(id小于4的最大值)

SELECT MAX(id) AS previous_id
FROM your_table_name
WHERE subjectId = 5 AND id < 4;

执行后返回结果为1。

获取下一个ID(id大于4的最小值)

SELECT MIN(id) AS next_id
FROM your_table_name
WHERE subjectId = 5 AND id > 4;

执行后返回结果为6。

一次性获取两个ID

如果想在一条查询里拿到结果,可以用:

SELECT
  (SELECT MAX(id) FROM your_table_name WHERE subjectId = 5 AND id < 4) AS previous_id,
  (SELECT MIN(id) FROM your_table_name WHERE subjectId = 5 AND id > 4) AS next_id;

方法二:窗口函数方式(适用于MySQL 8.0+、PostgreSQL等支持窗口函数的数据库)

用LAG()和LEAD()函数可以直接定位当前记录的前后ID,写法更简洁:

SELECT
  LAG(id) OVER (PARTITION BY subjectId ORDER BY id) AS previous_id,
  LEAD(id) OVER (PARTITION BY subjectId ORDER BY id) AS next_id
FROM your_table_name
WHERE id = 4 AND subjectId = 5;

这个查询会直接返回previous_id=1、next_id=6,它通过PARTITION BY subjectId按科目分组,ORDER BY id按ID排序,分别取当前行的前一行和后一行ID。

内容的提问来源于stack exchange,提问作者Dambar Sah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:32:53