php+mysql 判断记录位置

忐忑 发布于 2016/05/13 19:00
阅读 161
收藏 0

数据结构:

ID        Catid        Order
1        1                1
2        1                5
3        2                3
4        1                2
5        2                15
7        1                11
8        1                9
...
152       1            155
153        1            143

我需要的是根据一个ID,算出这个ID是当前CATID下的第几条记录

比如 给的 ID 是 7 对应的Catid是1 。 SQL语句就是: 

SELECT * 
FROM `news_list` 
WHERE `TId` =1
ORDER BY `order` ASC 
LIMIT x , 30


因为根据order排序,而且数据比较多。

需要解决的问题是:
比如给个ID=7 , 根据ID所属的Catid,计算出获取的结果中此ID的位置。(7是第4条记录)

希望大神们帮忙。

ps:数据量大,不能先读出满足条件的所有记录,再判断。

加载中
0
SunnyGo
SunnyGo
set @i :=0;SELECT @i :=@i+1 as num,news_list.* 
FROM `news_list` 
WHERE `catid` =1
ORDER BY `order` ASC 
LIMIT 0 , 30


0
SunnyGo
SunnyGo
SunnyGo
回复 @忐忑 : set @i :=0;SELECT @i :=@i+1 as num,news_list.* FROM `news_list` WHERE `catid` =1 ORDER BY `ID` ASC LIMIT 0 , 30
忐忑
忐忑
你理解错我的问题了。 我要的根据ID获得排序(也就是第几位出现的数据);
0
阿采
阿采

select count(a.Catid), a.Catid, a.Order from news_list  a , ( select Catid from news_list where ID = yourinput ) b 

where a.Catid = b.catid order by a.Order

0
SunnyGo
SunnyGo
set @i  :=0;SELECT @i  :=@i+1 as num,news_list.* 
FROM `news_list` 
WHERE `catid` =1
ORDER BY `ID` ASC 
LIMIT 0 , 30
返回顶部
顶部