gpt4 book ai didi

MYSQL 下一条 上一条 记录

转载 作者:行者123 更新时间:2023-11-29 03:13:27 25 4
gpt4 key购买 nike

我需要能够从非自动增量 ID 中找到下一条和上一条记录。

数据库中的正确排序顺序使用此 order by 语句:

以下仅适用于列出搜索的所有结果。ORDER BY length(general.blockid), general.blockid, length(general.plotid), general.plotid

需要知道下一条和上一条记录的页面,将唯一的 id/varchar 保存在 URL 中,简单地为 ?id=100_1A

在上面的 url 变量示例中,

100_1A 在数据库中作为 block 图

100 是数据库中的 blockid

1A 在数据库中作为 plotid

当我记录 100_1A 时,下一条记录应该是 100_1B。到100_1a的前一条记录应该是99_6C

我的问题是,当我在排序之前不知道顺序时,如何查询数据库以获取下一条记录?

我输入的排序顺序适用于搜索结果页面。

当用户点击进入特定记录时,id 被传递给 detail-view.php?id=100_1a 上的 ur

从 View 页面我需要取 100_1A 并使用相同的排序来查看 100_1A 之后和之前的记录

最佳答案

你可以试试这个

set @row:=0;
select * from
(
select *, (@row:=@row+1) as row_number from your_tables
order by
length(general.blockid), general.blockid,
length(general.plotid), general.plotid
) as rowset
WHERE id='100_A';

以上内容将通过引用 row_number 列为您提供 100_A 的位置,您可以使用该列来确定下一行/上一行,例如,

set @row:=0;
select * from
(
select *, (@row:=@row+1) as row_number from your_tables
order by
length(general.blockid), general.blockid,
length(general.plotid), general.plotid
) as rowset
where
row_number in(first_query_row+1, first_query_row-1);

请注意,如果表很大,查询成本可能会非常高,
你可以考虑创建一个 view 汇总表来存储row_number和uniqid

创建汇总表的例子

create table ordering_table
(
row_number int(10) unsigned not null default 0,
blockid varchar(255),
); /* no index, define yourself later */

set @row:=0
insert into ordering_table
select @row:=@row+1, blockid from your_tables
order by ...

关于MYSQL 下一条 上一条 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4443056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com