MySQL-按特定顺序选择行

哈桑新

我正在尝试建立一个像LinkedIn一样的人员目录:

http://www.linkedin.com/directory/people-a

我不想获取所有以namefield开头的行a并建立像LinkedIn这样的链接列表。MySQL中有什么办法,所以我只能按以下顺序获取行:

1st,100th,101st,200th,201st,300th,301st,400th,401st,Last

这意味着我要在确定某项之后获取两个连续的行,gap包括第一项和最后一项。这些ID的排列顺序不是很好,所以我不能使用此answser任何帮助或提示,不胜感激。


假设我的查询SELECT * FROM业务where name like 'a%' order by name返回的id是这样的:

1,3,5,6,8,9,12,33,45,66,77,88,100,103,120,133,155,166,177,178,198

以上是我是否要获取所有行。但是我想要的是在一定距离后才得到物品。例如,如果我想在每5个项目之后进行选择:

1,9,12,88,100,166,177,198

因此,跳过4个项目,然后选择下两个项目。在mysql中甚至有可能吗?

吉尔格

您可以根据需要进行排序,以创建一些获取数字并返回0,1的函数(例如,您指定的所有数字均为0),然后需要将该行的排名传递给函数。

例子

select first_name,rank
  from (
         SELECT first_name,
                @curRank := @curRank + 1 AS rank
           FROM person p, (SELECT @curRank := 0) r ) x
 order by myfunc(x.rank);

myfunc是您编写的函数

如果您只想获取这些行,而不只是对其进行排序并首先获取它们,则可以执行以下操作:

select first_name,rank
 from (
        SELECT first_name,
               @curRank := @curRank + 1 AS rank
          FROM person p, (SELECT @curRank := 0) r ) x
 where rank in (1,100,101,102...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章