gpt4 book ai didi

php - 从自定义排序和过滤的表中获取上一个和下一个 id

转载 作者:行者123 更新时间:2023-11-29 21:05:20 25 4
gpt4 key购买 nike

在我的 PHP/mysql 应用程序中,用户可以从数据库中过滤和排序记录。可以为每列单独设置过滤器,并且可以为每列 DESC/ASC 设置顺序。他得到一个表格,他可以在其中单击以详细说明一条记录,详细信息是上一个和下一个按钮,女巫将他带到下一个/上一个记录,并根据他在表中设置的过滤器和顺序进行操作。

当表按列排序时,有什么方法可以获取下一条和上一条记录的 ID,其中可能存在重复值吗?我尝试过这样的事情:

select * from foo where column = (select min(column) from foo where column > 4)

但这不适用于前一列值与当前列值相同的记录。

因为一个表可能有数百万条记录,所以我不能只选择全部并迭代整个表。

最佳答案

如果我正确理解了你的问题,这个肮脏的东西可能会有所帮助:

  1. 首先,您可以像这样编写 SELECT 查询:

    SET @row_num=0;
    SELECT @row_num:=@row_num+1 AS `row_num`, t_table.* FROM t_table WHERE type_id>0 ORDER BY type_id ASC, type_place_id DESC, user_id DESC LIMIT 100;

这里的要点是获取每行的订单号(将出现在row_num列中)。

  • 第二步是保存点击记录的row_num值($current)。
  • 因此,要获取有关当前记录的数据,您可以使用下一个查询:

    SET @row_num=0;
    SELECT * FROM
    (SELECT @row_num:=@row_num+1 AS `row_num`, t_table.* FROM t_table WHERE type_id>0 ORDER BY type_id ASC, type_place_id DESC, user_id DESC LIMIT 100) AS counted_view WHERE counted_view.row_num = {$current};
  • 关于上一个:

        SET @row_num=0;
    SELECT * FROM
    (SELECT @row_num:=@row_num+1 AS `row_num`, t_table.* FROM t_table WHERE type_id>0 ORDER BY type_id ASC, type_place_id DESC, user_id DESC LIMIT 100) AS counted_view WHERE counted_view.row_num = {$current - 1};

    下一条记录:

    SET @row_num=0;
    SELECT * FROM
    (SELECT @row_num:=@row_num+1 AS `row_num`, t_table.* FROM t_table WHERE type_id>0 ORDER BY type_id ASC, type_place_id DESC, user_id DESC LIMIT 100) AS counted_view WHERE counted_view.row_num = {$current + 1};

    关于php - 从自定义排序和过滤的表中获取上一个和下一个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36864539/

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