精华内容
下载资源
问答
  • 分页的时候,只取pageSize的记录,可遇见的问题是: 这个单一字段必须是唯一的 这个字段必须是可以被排序的 不支持字段排序 针对这一问题,我用C#做了一个类,解决以上的对多字段排序分页和每次都取pageSize条记录...
  • 所以如果要是多字段排序分页的话就没法用了。所以自己写了个很实用的,但是估计效率不是很高,尤其是分页那部分 注意:由于时间问题,已经把表写死了。排序条件也写死了。如果有需要的话可以提成变量(表要动态提...
    由于现在大部分 分页存储过程都支持有个排序字段。所以如果要是多字段排序分页的话就没法用了。所以自己写了个很实用的,但是估计效率不是很高,尤其是分页那部分
     
    注意:由于时间问题,已经把表写死了。排序条件也写死了。如果有需要的话可以提成变量(表要动态提字段)
     
    1. create proc BListPage
      @Filter varchar(500),
      @indexPage int,
      @PageSize int
      as
    2. declare @strsql varchar(8000)
      declare @strStartRow varchar(100)
      declare @strendRow varchar(100)
    3. /*设置搜索条件*/
      if(@Filter <> '')
      Set @strsql =   '  where  ' + @Filter
    4. /*起始行号*/
      SET @strStartRow = CAST(((@indexPage - 1)*@PageSize+1) AS varchar(100))
    5. /*结束行号*/
      SET @strendRow = CAST((@indexPage *@PageSize ) AS varchar(100))
    6. exec('
      declare @tempTable table(tid  int identity(1,1) ,
       id int  ,
       Title varchar(1000)   ,
       SecondTitle varchar(1000)  ,
       Url varchar(1000)  ,
       ContentHtml ntext   ,
       Click int  ,
       isExpire int,
       CountryID int  ,
       LastDate datetime,
       SignName varchar(50) ,
       SignDate datetime  ,
       LastUpdater varchar (50),
       LastUpdate datetime,
       GroupType  char(10),
       SchoolName varchar(50)  ,
       MeetingID int  ,
       AllMeeting varchar(100) 
    7. )
    8. insert @tempTable(
      id,
       Title,
       SecondTitle,
       Url,
       ContentHtml,
       Click,
       isExpire,
       CountryID,
       LastDate,
       SignName,
       SignDate,
       LastUpdater,
       LastUpdate,
       GroupType,
       SchoolName,
       MeetingID,
       AllMeeting
    9. )   select *  from  web_Bulletin  '
      + @strsql +
      ' order by  lastdate asc
    10. select * from  @tempTable where tid >= '+@strStartRow+' and tid <= '+@strendRow+' ')
    11. GO

     

     

    1. drop proc  BListPage
    2. BListPage '',2,10
    展开全文
  • 一个成熟的 多字段 排序 分页 存储过程 (有bug) 收藏 同事那的一个成熟 多字段 排序 分页 存储过程sql中调用 :exec CMS_SearchGetDataByPage tblschool,id,IsEmp,IsNom,IsEmp , IsNom,IsEmp desc, IsNom desc,id,...

    原创  一个成熟的 多字段 排序 分页 存储过程 (有bug) 收藏

    <script type="text/javascript"></script> <script class="blogstory"></script>

    同事那的一个成熟 多字段 排序 分页 存储过程

    sql中调用 :

    exec CMS_SearchGetDataByPage 'tblschool','id,IsEmp,IsNom','IsEmp , IsNom','IsEmp desc, IsNom desc','id',10,1,''

    c# 中调用:

    /// <summary>

    /// 分页获取数据列表2

    /// </summary>

    /// <param name="tableName">表名</param>

    /// <param name="fldNames">选择字段列表,以,分隔</param>

    /// <param name="selectOrderFldName">排序字段列表,以,分隔(不能含keyFldName指定的字段,可为空)</param>

    /// <param name="orderFldDesc">排序字段及方向,如addDate desc,id desc(排序字段需通过selectOrderFldName指

     

    定,可为空)</param>

            /// <param name="keyFldName">主键字段(没有主键请指定不重复的字段)</param>

            /// <param name="PageSize">每页记录数</param>

            /// <param name="PageIndex">当前页</param>

            /// <param name="strWhere">SQL条件</param>

            /// <returns>数据列表</returns>

            public static DataSet GetList(string tableName, string fldNames, string selectOrderFldName, string 

     

    orderFldDesc, string keyFldName, int PageSize, int PageIndex, string strWhere)

            {

                SqlParameter[] parameters = {

                        new SqlParameter("@tblName", SqlDbType.VarChar, 255),

                        new SqlParameter("@fldNames", SqlDbType.VarChar, 1000),

                        new SqlParameter("@selectOrderFldName", SqlDbType.VarChar, 500),

                        new SqlParameter("@orderFldDesc", SqlDbType.VarChar, 500),

                        new SqlParameter("@keyFldName", SqlDbType.VarChar, 255),

                        new SqlParameter("@PageSize", SqlDbType.Int),

                        new SqlParameter("@PageIndex", SqlDbType.Int),

                        new SqlParameter("@strWhere", SqlDbType.VarChar,1000)

                        };

                parameters[0].Value = tableName;

                parameters[1].Value = fldNames;

                parameters[2].Value = selectOrderFldName;

                parameters[3].Value = orderFldDesc;

                parameters[4].Value = keyFldName;

                parameters[5].Value = PageSize;

                parameters[6].Value = PageIndex;

                parameters[7].Value = strWhere;

                return DbHelperSQL.RunProcedure("CMS_SearchGetDataByPage", parameters, "ds");

            }

     

    存储过程本身:

     

    create PROCEDURE CMS_SearchGetDataByPage

        @tblName      varchar(255),       -- 表名

        @fldNames      varchar(1000),     -- 选择的字段列表以,分隔

        @selectOrderFldName      varchar(500),  -- 排序字段以,分隔(不能含keyFldName指定的字段,可为空)

        @orderFldDesc      varchar(500),  -- 排序字段及排序方向,如addDate desc,id desc(排序字段需通过selectOrderFldName指定,可为空)

        @keyFldName      varchar(255),     -- 主键字段

        @PageSize     int = 10,           -- 页尺寸

        @PageIndex    int = 1,            -- 页码

        @strWhere     varchar(1000) = ''  -- 查询条件(注意: 不要加where)

    AS

    declare @strWhereA varchar(1200)            -- 临时变量,给sqlwhere加where

    declare @strOrderA varchar(2000)            -- 第一次排序类型

    declare @strOrderB varchar(2000)            -- 第二次排序类型

    declare @strSqlA varchar(4000)          -- 第一次选出

    declare @strSqlB varchar(8000)          -- 第二次选出

    declare @strSQL varchar(8000)           -- 最后选出

    /* 条件*/

    if @strWhere != ''

        set @strWhereA = ' where ' + @strWhere

    else

        set @strWhereA = ''

        

    /* 选择字段列表*/

    if @fldNames is null or rtrim(@fldNames) = ''

        set @fldNames = '*'

        

    /* 排序字段列表*/

    if not(@selectOrderFldName is null or rtrim(@selectOrderFldName) = '')

        if rtrim(@selectOrderFldName) = 'id'

            set @selectOrderFldName = ''

        else

            set @selectOrderFldName = ',' + @selectOrderFldName

        

    /* 构建order,按指定方式排序*/

    if @orderFldDesc is null or rtrim(@orderFldDesc) = ''

        set @orderFldDesc = ' order by id desc'

    else

        set @orderFldDesc = ' order by ' + @orderFldDesc

    set @strOrderA = UPPER(@orderFldDesc)

    set @strOrderB =  replace(@strOrderA,'DESC','DESC1')

    set @strOrderB =  replace(@strOrderB,'ASC','DESC')

    set @strOrderB =  replace(@strOrderB,'DESC1','ASC')

     

    /* 第一页*/

    if @PageIndex = 1

        set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldNames + ' from [' + @tblName + '] with(nolock)' + @strWhereA + ' ' + @strOrderA

    else

        begin

            --取得总记录数

            declare @sql nvarchar(500)

            declare @maxCount int

            declare @maxPage int

            declare @tempRowCount int

            set @sql ='select @maxCount = count('+@keyFldName+') from [' + @tblName + ']' + @strWhereA

            exec sp_executesql @sql,N'@maxCount int output',@maxCount output

            set @maxPage = @maxCount / @PageSize

            if(@maxCount % @PageSize > 0)

                set @maxPage = @maxPage + 1

            /* 最后一页*/

            if @PageIndex >= @maxPage

                begin

                    set @PageIndex = @maxPage

                    set @strSqlA = char(13) + '(select top '+str(@maxCount % @PageSize)+' ' + @keyFldName + @selectOrderFldName + ' from [' + @tblName + '] as a with(nolock) ' + @strWhereA + @strOrderB + '  )' + char(13)

                    set @strSqlB = char(13) + '(select ' + @keyFldName +' from ' + @strSqlA  + ' as b )' + char(13)

                    set @strSQL = 'select ' + @fldNames + ' from [' + @tblName + '] where ([' + @keyFldName + '] in '+@strSqlB+')' + @strOrderA + char(13)

                end

            else

                begin

                    /* 不是第一页,也不是最后一页*/

                    if(@PageIndex <= @maxPage / 2)

                        begin

                        --前半数的页

                            set @tempRowCount = @PageIndex * @PageSize

                            /* 构建SQL,本分页算法的目的是为了实现高效的非主键排序的分页。by tony */

                            /* 1、先按指定字段+主键字段按降序选出perPage*pageNum条记录*/

                            set @strSqlA = char(13) + '(select top '+str(@tempRowCount)+' ' + @keyFldName + @selectOrderFldName + ' from [' + @tblName + '] as a  with(nolock) ' + @strWhereA + @strOrderA + '  )' + char(13)

                            /* 2、再从选出的记录中按升序选出perPage条记录*/

                            set @strSqlB = char(13) + '(select top '+str(@PageSize)+' ' + @keyFldName + ' from ' + @strSqlA  + ' as b ' + @strOrderB + '  )' + char(13)

                            /* 3、从数据库中选出主键在第二次选出的记录中的记录,按降序排列,分页完成*/

                            set @strSQL = 'select ' + @fldNames + ' from [' + @tblName + '] where ([' + @keyFldName + '] in '+@strSqlB+')' + @strOrderA

                        end

                    else

                        begin

                        --后半数的页

                            set @tempRowCount = @maxCount - (@PageIndex -1) * @PageSize

                            /* 构建SQL,本分页算法的目的是为了实现高效的非主键排序的分页。by tony */

                            /* 1、先按指定字段+主键字段按降序选出perPage*pageNum条记录*/

                            set @strSqlA = char(13) + '(select top '+str(@tempRowCount)+' ' + @keyFldName + @selectOrderFldName + ' from [' + @tblName + '] as a  with(nolock) ' + @strWhereA + @strOrderB + '  )' + char(13)

                            /* 2、再从选出的记录中按升序选出perPage条记录*/

                            set @strSqlB = char(13) + '(select top '+str(@PageSize)+' ' + @keyFldName + ' from ' + @strSqlA  + ' as b ' + @strOrderA + '  )' + char(13)

                            /* 3、从数据库中选出主键在第二次选出的记录中的记录,按降序排列,分页完成*/

                            set @strSQL = 'select ' + @fldNames + ' from [' + @tblName + '] where ([' + @keyFldName + '] in '+@strSqlB+')' + @strOrderA

                        end

                    end

        end

     

    set nocount on

     

    /*print @strSQL*/ --显示SQL

    exec (@strSQL)

    set nocount off

    RETURN

     

    展开全文
  • 根据条件获取个实体 /// /// <param name="where"></param> /// <returns></returns> public List<TResult> GetPageList, TResult>(Expression, TResult>> select , Expression, bool >> ...

    模型:

     public class IPageCommand
        {
            public string Keyword { get; set; }
            public int PageIndex { get; set; }
            public int PageSize { get; set; }
            public OrderModelField[] OrderModelField { get; set; }
        }
        public struct OrderModelField
        {
            public string SortField { get; set; }
            public bool IsDesc { get; set; }
        }

    方法:

    /// <summary>
            /// 根据条件获取多个实体
            /// </summary>
            /// <param name="where"></param>
            /// <returns></returns>
            public List<TResult> GetPageList<TEntity, TResult>(Expression<Func<TEntity, TResult>> select, Expression<Func<TEntity, bool>> where, int pageIndex, int pageSize, out long total, params OrderModelField[] orderByExpression)
                where TEntity : class
            {
                //条件过滤
                var query = _context.Set<TEntity>().Where(where);
    
                //创建表达式变量参数
                var parameter = Expression.Parameter(typeof(TEntity), "o");
    
                if (orderByExpression != null && orderByExpression.Length > 0)
                {
                    for (int i = 0; i < orderByExpression.Length; i++)
                    {
                        //根据属性名获取属性
                        var property = typeof(TEntity).GetProperty(orderByExpression[i].SortField);
                        //创建一个访问属性的表达式
                        var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                        var orderByExp = Expression.Lambda(propertyAccess, parameter);
    
                        string OrderName = "";
                        if (i > 0)
                            OrderName = orderByExpression[i].IsDesc ? "ThenByDescending" : "ThenBy";
                        else
                            OrderName = orderByExpression[i].IsDesc ? "OrderByDescending" : "OrderBy";
    
    
                        MethodCallExpression resultExp = Expression.Call(typeof(Queryable), OrderName, new Type[] { typeof(TEntity), property.PropertyType }, query.Expression, Expression.Quote(orderByExp));
    
                        query = query.Provider.CreateQuery<TEntity>(resultExp);
                    }
                }
    
                total = query.Count();
                return query.Skip((pageIndex - 1) * pageSize).Take(pageSize).Select(select).ToList();
            }

    参数:

    { 
     "Keyword": "string",
      "PageIndex": 2,
      "PageSize": 5,
      "OrderModelField": [
        {
          "SortField": "CreateTime",
          "IsDesc": true},
    {
          "SortField": "String",
          "IsDesc": true}
    
      ]
    }

     调用:

     public List<ExampleResult> GetList(PagedCommand Cmd, long total)
            {
                
                return GetPageList<ExampleEntity, ExampleResult>(x => new ExampleResult
                {
                    Id = x.Id,
                    Boolean = x.Boolean,
                    CreateTime = x.CreateTime,
                    Decimal = x.Decimal,
                    Enum = x.Enum,
                    Float = x.Float,
                    Int = x.Int,
                    String = x.String
                }, x => x.Boolean, Cmd.PageIndex, Cmd.PageSize, out total, Cmd.OrderModelField);
    
            }

     

    转载于:https://www.cnblogs.com/xuhongcai/p/8414435.html

    展开全文
  • 同事那的一个成熟 多字段 排序 分页 存储过程 sql中调用 : exec CMS_SearchGetDataByPage tblschool,id,IsEmp,IsNom,IsEmp , IsNom,IsEmp desc, IsNom desc,id,10,1, c# 中调用: /// 

     

    同事那的一个成熟 多字段 排序 分页 存储过程

     

     

    sql中调用 :

     

    exec CMS_SearchGetDataByPage 'tblschool','id,IsEmp,IsNom','IsEmp , IsNom','IsEmp desc, IsNom desc','id',10,1,''

     

     

     

     

    c# 中调用:

     

    1. /// <summary>
    2.         /// 分页获取数据列表2
    3.         /// </summary>
    4.         /// <param name="tableName">表名</param>
    5.         /// <param name="fldNames">选择字段列表,以,分隔</param>
    6.         /// <param name="selectOrderFldName">排序字段列表,以,分隔(不能含keyFldName指定的字段,可为空)</param>
    7.         /// <param name="orderFldDesc">排序字段及方向,如addDate desc,id desc(排序字段需通过selectOrderFldName指
    8. 定,可为空)</param>
    9.         /// <param name="keyFldName">主键字段(没有主键请指定不重复的字段)</param>
    10.         /// <param name="PageSize">每页记录数</param>
    11.         /// <param name="PageIndex">当前页</param>
    12.         /// <param name="strWhere">SQL条件</param>
    13.         /// <returns>数据列表</returns>
    14.         public static DataSet GetList(string tableName, string fldNames, string selectOrderFldName, string 
    15. orderFldDesc, string keyFldName, int PageSize, int PageIndex, string strWhere)
    16.         {
    17.             SqlParameter[] parameters = {
    18.                     new SqlParameter("@tblName", SqlDbType.VarChar, 255),
    19.                     new SqlParameter("@fldNames", SqlDbType.VarChar, 1000),
    20.                     new SqlParameter("@selectOrderFldName", SqlDbType.VarChar, 500),
    21.                     new SqlParameter("@orderFldDesc", SqlDbType.VarChar, 500),
    22.                     new SqlParameter("@keyFldName", SqlDbType.VarChar, 255),
    23.                     new SqlParameter("@PageSize", SqlDbType.Int),
    24.                     new SqlParameter("@PageIndex", SqlDbType.Int),
    25.                     new SqlParameter("@strWhere", SqlDbType.VarChar,1000)
    26.                     };
    27.             parameters[0].Value = tableName;
    28.             parameters[1].Value = fldNames;
    29.             parameters[2].Value = selectOrderFldName;
    30.             parameters[3].Value = orderFldDesc;
    31.             parameters[4].Value = keyFldName;
    32.             parameters[5].Value = PageSize;
    33.             parameters[6].Value = PageIndex;
    34.             parameters[7].Value = strWhere;
    35.             return DbHelperSQL.RunProcedure("CMS_SearchGetDataByPage", parameters, "ds");
    36.         }

    存储过程本身:

     

    1. create PROCEDURE CMS_SearchGetDataByPage
    2.     @tblName      varchar(255),       -- 表名
    3.     @fldNames      varchar(1000),     -- 选择的字段列表以,分隔
    4.     @selectOrderFldName      varchar(500),  -- 排序字段以,分隔(不能含keyFldName指定的字段,可为空)
    5.     @orderFldDesc      varchar(500),  -- 排序字段及排序方向,如addDate desc,id desc(排序字段需通过selectOrderFldName指定,可为空)
    6.     @keyFldName      varchar(255),     -- 主键字段
    7.     @PageSize     int = 10,           -- 页尺寸
    8.     @PageIndex    int = 1,            -- 页码
    9.     @strWhere     varchar(1000) = ''  -- 查询条件(注意: 不要加where)
    10. AS
    11. declare @strWhereA varchar(1200)            -- 临时变量,给sqlwhere加where
    12. declare @strOrderA varchar(2000)            -- 第一次排序类型
    13. declare @strOrderB varchar(2000)            -- 第二次排序类型
    14. declare @strSqlA varchar(4000)          -- 第一次选出
    15. declare @strSqlB varchar(8000)          -- 第二次选出
    16. declare @strSQL varchar(8000)           -- 最后选出
    17. /* 条件*/
    18. if @strWhere != ''
    19.     set @strWhereA = ' where ' + @strWhere
    20. else
    21.     set @strWhereA = ''
    22.     
    23. /* 选择字段列表*/
    24. if @fldNames is null or rtrim(@fldNames) = ''
    25.     set @fldNames = '*'
    26.     
    27. /* 排序字段列表*/
    28. if not(@selectOrderFldName is null or rtrim(@selectOrderFldName) = '')
    29.     if rtrim(@selectOrderFldName) = 'id'
    30.         set @selectOrderFldName = ''
    31.     else
    32.         set @selectOrderFldName = ',' + @selectOrderFldName
    33.     
    34. /* 构建order,按指定方式排序*/
    35. if @orderFldDesc is null or rtrim(@orderFldDesc) = ''
    36.     set @orderFldDesc = ' order by id desc'
    37. else
    38.     set @orderFldDesc = ' order by ' + @orderFldDesc
    39. set @strOrderA = UPPER(@orderFldDesc)
    40. set @strOrderB =  replace(@strOrderA,'DESC','DESC1')
    41. set @strOrderB =  replace(@strOrderB,'ASC','DESC')
    42. set @strOrderB =  replace(@strOrderB,'DESC1','ASC')
    43. /* 第一页*/
    44. if @PageIndex = 1
    45.     set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldNames + ' from [' + @tblName + '] with(nolock)' + @strWhereA + ' ' + @strOrderA
    46. else
    47.     begin
    48.         --取得总记录数
    49.         declare @sql nvarchar(500)
    50.         declare @maxCount int
    51.         declare @maxPage int
    52.         declare @tempRowCount int
    53.         set @sql ='select @maxCount = count('+@keyFldName+') from [' + @tblName + ']' + @strWhereA
    54.         exec sp_executesql @sql,N'@maxCount int output',@maxCount output
    55.         set @maxPage = @maxCount / @PageSize
    56.         if(@maxCount % @PageSize > 0)
    57.             set @maxPage = @maxPage + 1
    58.         /* 最后一页*/
    59.         if @PageIndex >= @maxPage
    60.             begin
    61.                 set @PageIndex = @maxPage
    62.                 set @strSqlA = char(13) + '(select top '+str(@maxCount % @PageSize)+' ' + @keyFldName + @selectOrderFldName + ' from [' + @tblName + '] as a with(nolock) ' + @strWhereA + @strOrderB + '  )' + char(13)
    63.                 set @strSqlB = char(13) + '(select ' + @keyFldName +' from ' + @strSqlA  + ' as b )' + char(13)
    64.                 set @strSQL = 'select ' + @fldNames + ' from [' + @tblName + '] where ([' + @keyFldName + '] in '+@strSqlB+')' + @strOrderA + char(13)
    65.             end
    66.         else
    67.             begin
    68.                 /* 不是第一页,也不是最后一页*/
    69.                 if(@PageIndex <= @maxPage / 2)
    70.                     begin
    71.                     --前半数的页
    72.                         set @tempRowCount = @PageIndex * @PageSize
    73.                         /* 构建SQL,本分页算法的目的是为了实现高效的非主键排序的分页。by tony */
    74.                         /* 1、先按指定字段+主键字段按降序选出perPage*pageNum条记录*/
    75.                         set @strSqlA = char(13) + '(select top '+str(@tempRowCount)+' ' + @keyFldName + @selectOrderFldName + ' from [' + @tblName + '] as a  with(nolock) ' + @strWhereA + @strOrderA + '  )' + char(13)
    76.                         /* 2、再从选出的记录中按升序选出perPage条记录*/
    77.                         set @strSqlB = char(13) + '(select top '+str(@PageSize)+' ' + @keyFldName + ' from ' + @strSqlA  + ' as b ' + @strOrderB + '  )' + char(13)
    78.                         /* 3、从数据库中选出主键在第二次选出的记录中的记录,按降序排列,分页完成*/
    79.                         set @strSQL = 'select ' + @fldNames + ' from [' + @tblName + '] where ([' + @keyFldName + '] in '+@strSqlB+')' + @strOrderA
    80.                     end
    81.                 else
    82.                     begin
    83.                     --后半数的页
    84.                         set @tempRowCount = @maxCount - (@PageIndex -1) * @PageSize
    85.                         /* 构建SQL,本分页算法的目的是为了实现高效的非主键排序的分页。by tony */
    86.                         /* 1、先按指定字段+主键字段按降序选出perPage*pageNum条记录*/
    87.                         set @strSqlA = char(13) + '(select top '+str(@tempRowCount)+' ' + @keyFldName + @selectOrderFldName + ' from [' + @tblName + '] as a  with(nolock) ' + @strWhereA + @strOrderB + '  )' + char(13)
    88.                         /* 2、再从选出的记录中按升序选出perPage条记录*/
    89.                         set @strSqlB = char(13) + '(select top '+str(@PageSize)+' ' + @keyFldName + ' from ' + @strSqlA  + ' as b ' + @strOrderA + '  )' + char(13)
    90.                         /* 3、从数据库中选出主键在第二次选出的记录中的记录,按降序排列,分页完成*/
    91.                         set @strSQL = 'select ' + @fldNames + ' from [' + @tblName + '] where ([' + @keyFldName + '] in '+@strSqlB+')' + @strOrderA
    92.                     end
    93.                 end
    94.     end
    95. set nocount on
    96. /*print @strSQL*/ --显示SQL
    97. exec (@strSQL)
    98. set nocount off
    99. RETURN
    展开全文
  • 多字段排序分页存储过程

    千次阅读 2007-07-03 16:28:00
    create PROCEDURE ProcCustomPageForTaxisField ( @Table_Name varchar(1000), /**//* 查询的表名 */ @Sign_Record varchar(50), /**//* 标志字段
  • 经过修改 能分页多字段排序 可效率太低了 50万的数据 加上条件 排序 查一次就要1分钟左右 网上查貌似和数据库优化关系比较大 就建立索引之类的 可效率依然底下 故 特来求教 望高人分享一篇...
  • jfinal2.2的分页,计算总条数的时候会用正则表达式去除order by语句,当某一字段需要排序时,select语句就会出错。例如我的分页语句为:select * from t_group_contacts where groupId=? order by CO...
  • Jpa复杂查询字段分页排序 page = page * pageSize; startTime = startTime + " 00:00:00"; endTime = endTime+ " 23:59:59"; Date startDate = DateUtil.parse(startTime, "yyyy-...
  • java8的lambda表达式排序,理应用comparing,多字段 后面增加thenComparing,默认排序规则为正序。 排序 现在有个排序需求: a-倒序 b-当a相同时,正序 c-当b相同时,倒序 正确的写法: List<UserCouponVo> ...
  • 可以通过货道产品的总数量排序 设备表 device 货道表 channel 直接上SQL语句 SELECT d.*,b.goods_num FROM device as d LEFT JOIN ( SELECT sum(goods_num) as goods_num ,device_id FROM c...
  • Server2005/2008专用高效分页存储过程(支持多字段排序,支持Group By分组).
  • 今天在调试项目时发现Oracle使用rownum排序分页时出现了数据错乱的问题,前后端分离开发由于结合前端的插件使用只能在控制台定位错位在哪,经过排查发现前台传值没有问题,就去后端排查,最终定位了问题的所在,经过...
  • 时候,业务上会有分页操作的需求,对应的 SQL 类似下面这条: select a,b,c from t1 limit 10000,10; 表示从表 t1 中取出从 10001 行开始的 10 行记录。...查询根据非主键字段排序分页查询 根据自增且连
  • 可以字段排序分页存储过程

    千次阅读 2006-09-27 15:52:00
    CREATE PROC SP_PageList@tbname sysname, --要分页显示的表名@FieldKey sysname, --用于定位记录的主键(惟一键)字段,只能是单个字段@PageCurrent int=1, --要显示的页码@PageSize int=10, --每页的大小
  • SELECT * FROM ( SELECT a.id AS "id", a.`name` AS "name", a.unit_type AS "unitType", a.price_show AS "priceShow", a.price_sell AS "priceCustom", a.price_cost AS "p
  • bootstraptable后台分页时,字段排序的使用
  • 可按任意字段排序分页存储过程

    千次阅读 2005-12-22 11:00:00
    可按任意字段排序分页存储过程 最近做一个项目,其中有许多部分需要用到分页功能 并且这些需要分页的地方有一个共同的特点,那就是,分页,但并不是按ID(主键)来排序,而是要求按其他有重复值的列进行排序,比如,其中有...
  • 今天使用jfinal分页查询,但是这个查询比较特殊,要用多字段倒序排序。我的代码是这样的:public Page<Apply>page(int page){ return dao.paginate(page, Const.SIZE_APPLY, "SELECT apply.*,`subject`.`name` as ...
  • 其他参考已不可查,若有问题请联系及时删除...一、多字段排序 二、自定义排序 三、中文排序 四、其他条件排序 一、多字段排序 语法: select * from tablename order by column1, column2; 二、自定义排序 ...
  • //设置排序参数,setOrderByClause(a b):a,排序字段;b,排序方式(升?降) example.setOrderByClause(sortBy+" "+(desc?"desc":"asc")); } List<Brand> list=this.brandMapper.selectByExample(example); ...
  • 关于mysql order by 多字段排序问题

    千次阅读 2018-06-14 11:29:59
    问题1:多字段排序 解决方式:字段加逗号即可,可两个或两个以上排序 ORDER BY t_spec.`orderby` ASC,t_spec_item.`orderby` ASC 问题2:在mybaiti中使用pageHelper分页插件后,在mapper.xml中写的order by并...
  • 点击下载支持表关联任意字段排序的存储过程分页SQL>>> 网上有很现成的存储过程分页sql,但是大多数只支持主键字段或者唯一值字段进行排序。而对于有重复值的字段进行排序的时候,数据会遗漏。 而且很存储...
  • mysql排序分页小知识

    2020-07-01 13:58:25
    mysql 分页查询 是 若根据某字段排序后再分页 排序字段存在个相同值时 恰好碰到 相同字段数据被分开到不同页 查询数据会混乱 建议避免过多相同字段排序分页
  • 在采用orderBy进行排序时,假如排序字段为非唯一,例如以添加时间(created_at)字段进行排序,如果只采用该字段排序,有可能发生一些批量添加的数据添加时间一致,而造成在分页的时候,一条数据在不同页重复出现,...
  • < select id = "selectRealTimeMonitorPaging" parameterType ..."realTimeMonitorEntity" ...partition by 以此字段为分组 order by 以此字段排序 desc ) rn from 表 ) where rn = 1 -- 表示取第一个
  • 关于java 分页 排序多字段

    千次阅读 2019-11-05 11:27:56
    多字段排序: 导包: import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort.Order; 建立: Order order2 = new ...
  • MyBatis使用PageHelper排序分页

    千次阅读 2020-03-23 08:13:52
    文章目录MyBatis使用PageHelper排序分页前言排序分页使用PageHelper排序分页添加PageHelper Spring Boot依赖新增一个列表查询的方法使用PageHelper来设置排序分页查询条件测试和查看日志参考文档 MyBatis使用...
  • 解决方案:保证排序字段排序字段组合唯一。如:按照name排序,name在数据库中有重复的数据,然后导致分页排序出现重复的数据。这时只要在后面加个id或者其他在数据库中唯一的字段即可。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,468
精华内容 38,187
关键字:

多字段排序分页