首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求一条SQL语句! [已结帖,结帖人:xyhuanwell]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xyhuanwell
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-10-28 12:51:00 楼主
    求一SQL语句,我分组查询出了一个结果集,里面没有主键的,现在想对结果集分页,就是想查询例如第二十条到第四十条之间的记录,怎么样写呢??
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xyhuanwell
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:07:201楼 得分:0
    怎么没人回啊,自己顶一下!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuelazhade
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:08:562楼 得分:4
    select top 40 column from table
    where column not in (select top 20 column from table
    )
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baby97
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:15:153楼 得分:5
    用临时表吧
    insert into #temp
    select identity(1,1),* from 结果集
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiang_jiajia10
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:17:094楼 得分:5
    引用 3 楼 baby97 的回复:
    用临时表吧
    insert into #temp
    select identity(1,1),* from 结果集

    好办法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zlb789
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:18:205楼 得分:4
    结合2楼 3 楼的就可以了
     
      先放临时表中 ,再按2楼的思路就可以,  可以参考下分页存储过程的写法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qfgyd2004
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:19:356楼 得分:0
    select top 8 * from view_product_price where prodid not in(select top 16 prodid from product_price where pc4_id=256 or pc4_id=257 order by p_time desc) and pc4_id=256 or pc4_id=257 order by p_time desc
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovehongyun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:21:257楼 得分:4

    如果是sql 2005可以用row_number()函数

    如果没有能确定唯一值的列,那么2楼的方法就不能用了
    如果有能确定唯一值的列

    SQL code
    select top 20 column from 结果集 where column not in (select top 19 column from 结果集)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovehongyun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:23:058楼 得分:0
    如果没有确定唯一值的列.就用临时表吧.看3楼代码
    给它添一个唯一列 identity(1,1)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lizhimin0310
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:43:149楼 得分:0
    d
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • antiking
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 13:43:1610楼 得分:4
    select * from (
    SELECT *,
    Row_Number()  over (partition by Filed1 order by insert_time)as RowNumber
    FROM [Table]) T where RowNumber between 10 and 20
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangli0911
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 14:02:3311楼 得分:0
    select top 20 column from table where column not in (select top 20 column from table)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baby_cz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 14:59:1712楼 得分:0
    2楼正解
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liu2008hz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-28 15:08:5713楼 得分:4
    用临时表,把所有结果都放在临时表里,并且把临时表里的每一条结果自动编个号
    如:
    select identity(int,1,1) as id,* into #temp from 表 where 条件
    现在,临时表里的每一条记录都有一个编号,从1开始的编号
    所以,你分页的时候可以这样子取(假如你每页显示10条记录)
    select * from #temp where id>0 and id <=10
    诸如此类的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved