排序关系中记录的索引

时间:2011-05-23 16:18:09

标签: mysql sql ruby-on-rails-3 binary-search

鉴于我有一个排序关系(可能由

完成)
  SELECT id 
    FROM model 
   WHERE type = 'a' 
ORDER BY name`

...),现在我想快速获取特定记录的索引例如记录ID#15003

我应该如何在MySql中执行此操作[我是Rails开发人员]?

2 个答案:

答案 0 :(得分:2)

假设您使用索引表示行号。也就是说,如果结果返回'1,7,9,......'那么“9的索引”是3,它是第3行。

你想要的是各种所谓的“窗口函数”或“统计函数”,如row_number()。

MySQL没有它们。遗憾。

但是,虽然我不是RAILS开发人员,但我必须假设您可以在数组中获得结果并搜索数组并返回索引号?

编辑:根据您对Brad答案的评论,如果您为了分页结果而这样做,那么请查看LIMIT和OFFSET。 http://dev.mysql.com/doc/refman/5.0/en/select.html

答案 1 :(得分:0)

您是否在寻找以下内容:http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/

我相信这将要求您选择所有结果,直至达到预期效果。因此,如果您的记录位于索引15003,则必须选择记录1-15003。显然这不是有效的或可扩展的...也许有更好的方法来解决这个问题?为什么你还需要索引?为什么不在原始SQL上放置一个限制性更强的WHERE条件?