我正在对我的SQL结果进行分页(每页10个)。我想找出给定行(id
已知的URL)的页面,以便我可以直接跳转到正确的页面。
排序是已知的,但它不是一个简单的ORDER BY id ASC
,所以我不能只计算行id < wanted_id
。
允许使用特定于MySQL的命令和子查询。我想避免变量。
任何方法?
我有能力得到结果。我需要的是该行的 rank (即那行之前行的行数)。我不是在寻找蛮力方法(我宁愿检索10k ID并以编程方式找到该等级)。
答案 0 :(得分:0)
执行查询并将结果集插入临时表。除其他外,临时应具有专用的自动增量列。
找到自动增量列的值,其中行包含有问题的ID,执行一些简单的算术来计算行所属的页面,然后给出页面。
答案 1 :(得分:0)
使用第二个查询SELECT COUNT(*) FROM ... WHERE ...
。在WHERE子句中,将选定的记录缩小到相关记录之前的记录。
答案 2 :(得分:0)
select *,
_rowid,
floor (_rowid / 10)
from table
抱歉,错过了“无变量”的要求。
您可以使用“限制”跳转到特定页面。
答案 3 :(得分:0)
select count(*) as rank_number
from my_table
order by c1, c2 desc
where
c1 <= (select c1 from my_table where id = @id)
and
c2 >= (select c2 from my_table where id = @id)