我正在尝试建立一个像LinkedIn一样的人员目录:
http://www.linkedin.com/directory/people-a
我不想获取所有以name
field开头的行,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] 删除。
我来说两句