第一段是不分页的
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)