我写了一段mysql查询,但是两段order by的顺序却不一样,求助

第一段是不分页的

select T.ID ,TName.Name  ,(select Count(UsingT.TID) from UsingT where UsingT.TID=T.ID) as LinkCount
from T 
inner join TName 
on T.TNameID = TName.ID 

and TName.Name like @tname 
order by Name asc;          <=重点在这里

第二段是分页的

select T.ID ,TName.Name ,(select Count(UsingT.TID) from UsingT where UsingT.TID=T.ID) as LinkCount
from T 
inner join TName 
on T.TNameID = TName.ID 

where T.ID in 
(select ID from <这是加壳>
(select T.ID 
from T 
inner join TName 
on T.TNameID=TName.ID 
and TName.Name like @Tname 
order by Name asc       <=重点在这里
limit @start,@count)
as x); <这是加壳> 

但是order by后的两段结果顺序就不一样?比较奇怪

<顺便网友们在帮帮忙,评评我这第二段,效率是上升还是下降?本人新手>

order by 要放到最外面的查询结果后进行排序。

分析效率要看sql的执行计划,你可以运行测试一下。

 这两个记录集结果排序不能保证一直
 第二句中是where T.ID in ,in子句中排序对外层无效

where T.ID in
(select ID from <这是加壳>
(select T.ID
from T
inner join TName
on T.TNameID=TName.ID
and TName.Name like @Tname
order by Name asc <=重点在这里 ----------这子在这个语句中有效,
limit @start,@count)
as x); <这是加壳> -------------这里的2层其实就相当于

where T.ID in
(select T.ID
from T
inner join TName
on T.TNameID=TName.ID
and TName.Name like @Tname
limit @start,@count)