使用 order by 子句查询以获取下一条记录
Posted
技术标签:
【中文标题】使用 order by 子句查询以获取下一条记录【英文标题】:Query to Fetch next record with order by clause 【发布时间】:2015-03-15 00:47:42 【问题描述】:我正在研究 mysql。我正在从表中获取记录列表,并从中获取其中一条记录的详细信息。现在我想获取该列表的下一条记录。
我有以下查询
select * from table_name where column3 like %z% order by column2;
查询结果
column1 | column2 | column3
10 | abc1 | zzzz
2 | abc2 | zsdazz
20 | abc3 | sddszz
我选择了 column1 值为 2 的记录。现在我想要一个可以获取下一条记录的查询,在这种情况下,column1 的记录为 20。
注意:我的表中有数千条记录,用户可以选择任何记录然后转到下一条记录。
谢谢。
【问题讨论】:
【参考方案1】:您可以添加where
子句和子查询:
select *
from table_name
where column3 like '%z%' and
column2 > (select column2
from table_name
where column1 = 2 and column3 like '%z%'
)
order by column2;
注意:如果column1
是唯一的,则不需要'column3 like '%z%'。
【讨论】:
如果 column2 中的值是唯一的,则您的查询可以正常工作。如何处理非唯一值列2。 如果table_name
中有重复项,则可以在子查询中使用select max(column2)
。【参考方案2】:
使用LIMIT 子句
试试这个:
SELECT *
FROM table_name
WHERE column3 LIKE %z%
ORDER BY column2 LIMIT 2, 1;
【讨论】:
你能告诉我如何得到那个神奇的数字2
,我可以在limit子句中使用它。
您的查询正在运行,但假设我有 10k 条记录以及如何获取我正在获取的记录号,即包含在限制子句中的行号。
我已经接受了@GordonLinoff 给出的答案。但我仍然想知道如何准备可以放入限制条款的数字。
你问的详细登录信息是什么?
假设我从列 1 值为 55 的结果中选择记录,但在限制子句中,我必须从我之前获取的结果列表中指定该记录的行号。使用什么查询我可以获取该行号?以上是关于使用 order by 子句查询以获取下一条记录的主要内容,如果未能解决你的问题,请参考以下文章
使用 GROUP BY 和 ORDER BY 子句以降序打印记录