如何在表中获取下一行和上一行现在行

Posted

技术标签:

【中文标题】如何在表中获取下一行和上一行现在行【英文标题】:How get next row and previous row for now row in table 【发布时间】:2014-01-14 18:41:47 【问题描述】:

STRUCTURE TABLES AND ERROR WHEN EXECUTE QUERY ON SQLFIDDLE

我有桌子News

例如我得到NewsIdn = '164955'的行:

SELECT * FROM News WHERE NewsIdn = '164955'

上一行有NewsIdn = '270085',下一行有NewsIdn = '324955'

请告诉我如何通过 mysql 查询获取上一个 NewsIdn 和下一个 NewsIdn

【问题讨论】:

你的意思是这样的吗? ***.com/questions/1259458/… @user2183923 谢谢,没看过 【参考方案1】:

可能是这样的:

主要查询:

SELECT * FROM News WHERE NewsIdn = '164955';

上一行:

select * from News WHERE ID < 
    (select ID from News where NewsIdn = '164955') Order by ID DESC Limit 1;

下一行:

select * from News WHERE ID > 
    (select ID from News where NewsIdn = '164955') Order by ID Limit 1;

【讨论】:

为什么需要子查询? 真的不能保证每次选择列表的顺序都是一样的……选择小于原来的ID总是会得到'正确'的行。 我刚刚意识到 NewsIdn 不是该行的 ID。你的答案确实是正确的。 @learner -- 是的 -- 我现在明白了。我在先前的查询中添加了 DESC。现在工作。 sqlfiddle.com/#!2/a926a/13【参考方案2】:

试试这个:

上一个:

SELECT * FROM News WHERE NewsIdn < '164955' ORDER BY NewsIdn DESC LIMIT 1

下一步:

SELECT * FROM News WHERE NewsIdn > '164955' ORDER BY NewsIdn LIMIT 1

【讨论】:

以上是关于如何在表中获取下一行和上一行现在行的主要内容,如果未能解决你的问题,请参考以下文章

如何通过索引(而不是 id)在 SQLite 中获取一行

使用AngularJS单击添加按钮时如何在表中插入新数据行

如何在不使用索引检查 mysql 表中的 100000 条记录等所有行的情况下获得一行? [关闭]

在表中动态添加行 - Bootstrap 和 JS

从当前行和上一行计算 2 列

iOS:如何使用按钮切换 Tableview 行?