CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

这个SQL该怎么写呢?

楼主yexd_cjgl(adfasdgsadgsd)2005-04-03 17:58:17 在 MS-SQL Server / 应用实例 提问

我的表如:  
  编号     型号     类别     价格  
  001       a1         电脑       5000  
  002       b2         彩电       4000  
  003       a3         电脑       6000  
  004       b1         彩电       5000  
  005       a2         电脑       4000  
  006       b3         彩电       6000  
      .........  
  我需要显示前(后)X条记录(是根据价格排序后的)的表:(X是变化的,类别也是变化的,即作为参数)  
  比如选电脑的前2条:  
  编号     型号     电脑        
  003       b1         6000          
  002       b2         5000          
  再如选彩电的后2条:  
  编号     型号       彩电      
  004       a3         6000          
  001       a1         5000        
  怎么写呢?  
   
   
  问题点数:0、回复次数:4Top

1 楼631799(杭州工人)回复于 2005-04-03 18:25:14 得分 0

--取每种类别的前2条  
  select   *   from   tb   a   where   (select   count(1)   from   tb   where   类别=a.类别   and   价格>a.价格)<=2  
  --如果要显示具体的类别就:  
  select   *   from   tb   a   where   (select   count(1)   from   tb   where   类别=电脑   and   价格>a.价格)<=2  
  select   *   from   tb   a   where   (select   count(1)   from   tb   where   类别=彩电   and   价格>a.价格)<=2  
  Top

2 楼skeeterLa(英俊的大米虫)回复于 2005-04-03 18:35:31 得分 0

dim   recN   as   new   adodb.recordset    
  dim   X   as   int  
  dim   sqlX   as   string  
  '---后几条  
  sqlx="select   top   "   &     "&   x   &"     &   "   *   from   表     order   by   单价   desc"  
  recn.open   sqlx,cndata  
  recN.close  
  set   recN=nothing  
  '--前几条  
  sqlx="select   top   "&   "&   x   &"   &   "   *   from   表     order   by   单价   "  
  recn.open   sqlx,cndata  
  recN.close  
  set   recN=nothing  
  这是VB中的写法。  
   
   
   
  存储过程中可以写  
  CREATE   PROCEDURE   [dbo].[sqlGet]    
  @X   int,   --行数  
  @tag         ---后面、还是前面  
  AS  
  -------在返回指定的行数之后停止处理查询  
  SET   ROWCOUNT   @x  
  if   @tag='前'  
  begin  
          select     *   from   表   order   by   单价  
  end  
  else  
  if   @tag='后'  
  begin  
        select     *   from   表   order   by   单价   desc  
   
  end  
   
   
  Top

3 楼skeeterLa(英俊的大米虫)回复于 2005-04-03 18:37:30 得分 0

存储过程中可以写  
  CREATE   PROCEDURE   [dbo].[sqlGet]    
  @X   int,   --行数  
  @Lb   nvarchar(4),--类型  
  @tag         ---后面、还是前面  
  AS  
  -------在返回指定的行数之后停止处理查询  
  SET   ROWCOUNT   @x  
  if   @tag='前'  
  begin  
          select     *   from   表   where   类型=@lb   order   by   单价  
  end  
  else  
  if   @tag='后'  
  begin  
        select     *   from   表       类型=@lb     order   by   单价   desc  
   
  end  
  主要是:SET   ROWCOUNT   @x   这个用法Top

4 楼ziping(子平)回复于 2005-04-04 16:41:53 得分 0

select   top   X   *   from   t  
  select   top   X   *   from   t   order   by   y   descTop

相关问题

  • 这个sql怎么来写??
  • 这个sql怎么写呢?????????????????!!!!!!!!!!!!!!
  • 这个SQL怎么写呢?????
  • 这个SQL怎么写??
  • 这个sql怎么写啊!!!???
  • 这个SQL怎么写?
  • 这个SQL怎么写?
  • 这个SQL怎么写?
  • ***这个SQL怎么写呀?***
  • 这个SQL怎么写?

关键词

  • 电脑
  • 型号
  • 彩电
  • 类别
  • 写呢
  • 价格
  • 表
  • 编号型号
  • 是变化
  • from tb

得分解答快速导航

  • 帖主:yexd_cjgl

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo