如何在表中获取下一行和上一行现在行
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
【讨论】:
以上是关于如何在表中获取下一行和上一行现在行的主要内容,如果未能解决你的问题,请参考以下文章