例如
          
          declare  @pageIndex int ,           -- 页码
          declare    @pageSize   int,          -- 页尺寸  
         select top ((@PageIndex)*@PageSize) --取出前PageIndex页的数据
                            field1,field2,--查询字段
                            fieldOrderby --排序字段,按什么字段分页的字段,建议使用主键,或者唯一键
                            into #tempTable --插入临时表
                            from tableName --查询表名称                        
                           order by fieldOrderby --排序字段,按什么字段分页的字段,
                  -----取出前pageIndex页数据插入临时表
                 ------排除前pageIndex-1页的数据,取出第pageIndex的数据
                  select top (@PageIndex) --
                             field1,field2,--排序字段
                            fieldOrderby --
                           from #tempTable --从临时表中取数据
                          where fieldOrderby --
                          not in (select  top ((@PageIndex-1)*@PageSize) fieldOrderby from #tempTable)---- 从 临时表取出 pageIndex的数据
 
可以把临时表去掉,换成对应的SQL,但感觉思路就不是特别清楚了。难道SQL可维护性不重要吗?
大家怎么写的,都写在一起吗?还是一步一步分开写?有什么坏处吗?

解决方案 »

  1.   

    还是分开加注释的好,页面看起来也舒服,思路比较清晰。写成一句要理解半天,看楼主的这个貌似是05上的,可以用row_number。
      

  2.   

    虽然有的时候可以嵌套,但是嵌套的层次太多很容易晕的。
    SQL SERVER 里面的with表达式有的时候就挺好用的。
      

  3.   

    那是怎么SQL版的问题都是一句话?给维护的人出难题呢?
      

  4.   

    我是说把所有的sql写成一句,不是说解决的方法一句话
      

  5.   

    这个和实际需求有关系,有的简单的嵌套一步就ok了。
    这样就可以直接嵌套了。
    有些是无法分开的。例如
    select * from table a where id=(select min(id) from table where colnam=a.colname)
    分开写就完全没有必要。但是例如过程比较复杂的,中间需要多个步骤,无法一步到位就必须分开写。应该说实际情况实际分析。不是所有的情况都有固定的标准的。
      

  6.   

    --例如判断一个表中不存在则插入
    if((select count(*) from tablename where name=@name)=0)
    insert into ...--也可以
    declare @count int
    select @count=count(*) from tablename where name=@name
    if(@count=0)
    insert into ...
      

  7.   

    写SQL都没人管可维护性啊?SQL版那么多提问的,把SQL写的那么复杂,纯粹是考眼力呢?
    好像也都不重视SQL,也没听说过SQL有什么编码规范之类的东西?
      

  8.   

    SQL编码规范 
      

  9.   

    基本的命名规范还是有的,至于大量代码都是自己能看懂,后期维护就行了,一般接手别人的sql,我宁愿自己写一遍,多也不过三四百行,sql力求的是结果和效率。
      

  10.   

    编程规范可以参考这个
    http://topic.csdn.net/u/20091107/18/86d772cb-7d19-46b5-aaee-dac6300e85e4.html
      

  11.   

    sql力求的是结果和效率
    不管可维护性??
      

  12.   


    T-SQL 编码标准
      

  13.   

    分开写好检查中间的结果啊^_^
    我就喜欢适度的分开,比如group by,我更喜欢套一层,这样出现问题的时候方便检查中间的结果
    至于性能是不是有影响,也没有测试过,不了解^_^