在我的PHP / mysql应用程序中,用户可以从数据库中筛选和排序记录。可以为每个列分别设置过滤器,并且可以为每个列DESC / ASC设置顺序。他得到一张桌子,他可以点击一个记录的详细信息,详细信息是上一个和下一个按钮,他将下一个/上一个记录与他在桌面设置的过滤器和顺序相关联。
当按列排序表时,是否有任何方法可以获取下一个和上一个记录的id,其中可以是双重值?我尝试过这样的事情:
select * from foo where column = (select min(column) from foo where column > 4)
但是,这对于前一列值与当前列值相同的记录不起作用。
因为一张桌子可以有几百万条记录,所以我不能只选择所有记录并遍历整个表格。
答案 0 :(得分:0)
如果我正确理解了你的问题,这个脏的东西可能会有所帮助:
首先,您可以像这样编写SELECT查询:
is_permutation
这里要点是获取每一行的订单号(将出现在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
关于上一个:
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};