MYSQL查询的问题

有一张表,就一张表,个人用户信息
ID NAME AGE HEIGHT

ID是主键

查询条件比如 NAME LIKE '%xxx%' AGE >10 HEIGHT >165

假如会得到5678条结果

结果中ID是乱的,ID不是顺序的

在这5678条结果当中,有一条的结果的ID是9527

那么我怎么去查询这个ID叫9527的这行,在5678条结果中排第几行?

目地是分页,然后我就可以limit 从这行取10条或其它条

这种情况必须按某一个字段排序,如果按id排序,可以采用下面的方式,[code="java"]
select * from user where id>9527 limit 0,10;
[/code]
qq空间,twitter他们都是按时间来进行排序的,你考虑一下按哪个字段排序.

为什么会乱
查询条件比如 NAME LIKE '%xxx%' AGE >10 HEIGHT >165
这里可能走age/height的索引 所以出来的可能是age/height有序

如果你id是有序的

那么我怎么去查询这个ID叫9527的这行,在5678条结果中排第几行?
这个只能用order by id排序 然后 子查询查
count(id >=9527) 即可得到

目地是分页,然后我就可以limit 从这行取10条或其它条 如果是这样的话 可以在查询时带上id >=9527(往后查) id<=9527(往前查) 然后从第一页开始 更简单 而且效率高

MySQL没有rownum(),只能自己实现了。

方法一、对同一个表的连接查询:
[code="sql"]select count(*) rownum , a.id, a.name, a.age, a.height
from yunzhu.user_info a, yunzhu.user_info b
where a.id > b.id
group by a.id[/code]

方法二、子查询(与方法一基于同样的原理)
[code="sql"]select (select count(*) from yunzhu.user_info b where b.id < a.id) as rownum, a.id, a.name, a.age, a.height
from yunzhu.user_info a[/code]

当然,这样做是会对效率有一定影响的。

这里有更详细的描述:
[url]http://blog.csdn.net/ACMAIN_CHM/article/details/4095531[/url]

set @myno = 0;
select rownum from (
select (@myno := @myno + 1) as rownum,id as id FROM table) as tab
where id = *** ;