当前位置: 代码迷 >> C# >> net取前50条中的 五至8条,一直往后取,怎样取
  详细解决方案

net取前50条中的 五至8条,一直往后取,怎样取

热度:36   发布时间:2016-05-05 03:36:43.0
net取前50条中的 5至8条,一直往后取,怎样取
本帖最后由 pengxiaoshuang0 于 2015-05-19 00:16:18 编辑

我在 SqlDataSource1 列表中绑定 前面50行。 在 SqlDataSource2 绑定5-8行 ,在 SqlDataSource3 绑定9-13行 ,怎么写代码

也就说从数据库中取数据取前50条中的 5至8条,一直往后取,怎样取?

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:chuangtianConnectionString43 %>" 
        SelectCommand="SELECT top 50 * FROM [gangtai]where gangDiZhi like '%[玩具]%'order by gangDate DESC"></asp:SqlDataSource>


<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:chuangtianConnectionString43 %>" 
        SelectCommand="SELECT top 50 * FROM [gangtai]where gangDiZhi like '%[玩具]%'order by gangDate DESC"></asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource3" runat="server" 
        ConnectionString="<%$ ConnectionStrings:chuangtianConnectionString43 %>" 
        SelectCommand="SELECT top 50 * FROM [gangtai]where gangDiZhi like '%[玩具]%'order by gangDate DESC"></asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource4" runat="server" 
        ConnectionString="<%$ ConnectionStrings:chuangtianConnectionString43 %>" 
        SelectCommand="SELECT top 50 * FROM [gangtai]where gangDiZhi like '%[玩具]%'order by gangDate DESC"></asp:SqlDataSource>
------解决思路----------------------
前50行很好取,直接TOP 50;前50行中的第5-8行;可以这样取,select top 4 * from tablname where id not in(前50行数据中的前4个ID,意思就是从第5个ID取值,取4个,不就是第4条到第8条);后面的是同一个道理;第9到第13条;就是取50行数据中,ID号不在前9行数据中的数据;
------解决思路----------------------
读取到集合,利用集合的index 取值。
------解决思路----------------------
各种SqlDataSource,看的蛋疼到死……
------解决思路----------------------
select * from(select 查询字段,ROW_NUMBER() over(order by 排序字段) NUMS from 表) T 
WHERE NUMS BETWEEN 开始位置(如1,5,9)AND 结束位置如(50,8,13)
------解决思路----------------------
引用:
select * from(select 查询字段,ROW_NUMBER() over(order by 排序字段) NUMS from 表) T 
WHERE NUMS BETWEEN 开始位置(如1,5,9)AND 结束位置如(50,8,13)


SELECT * FROM (  SELECT ROW_NUMBER() OVER (order by T.idstr)AS Row, T.*  from tb_status T  ) TT WHERE TT.Row between 1 and 10


拼接这样分页查询语句呗。上面返回第1到10条记录。需要注意的是,数据库记录的行号是从1开始编号的,而不是0.
  相关解决方案