• MySQL分页时出现的数据重复问题


    
    
    在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页。但是,当limit遇到order by的时候,可能会出现翻到第二页的时候,竟然又出现了第一页的记录。
    如:
    SELECT
      `post_title`,
      `post_date`
    FROM
      post
    WHERE
      `post_status` = 'publish'
    ORDER BY
      view_count desc
    LIMIT
      5, 5
    
     使用上述SQL查询的时候,很有可能出现和LIMIT 0,5相同的某条记录。而如果使用如下方式,则不会出现重复的情况:
     SELECT
      *
    FROM
      post
    WHERE
      post_status = 'publish'
    ORDER BY
      view_count desc
    LIMIT
      5, 5
    
    
     但是,由于post表的字段很多,仅仅希望用这两个字段,不想把post_content也查出来。为了解决这个情况,在ORDER BY后面使用了两个排序条件来解决这个问题,如下:
     SELECT
      `post_title`,
      `post_date`
    FROM
      post
    WHERE
      `post_status` = 'publish'
    ORDER BY
      view_count desc,
      ID asc
    LIMIT
      5, 5
    
      按理来说,MySQL的排序默认情况下是以主键ID作为排序条件的,也就是说,如果在view_count相等的情况下,主键ID作为默认的排序条件,不需要我们多此一举加ID asc。但是事实就是,
      MySQL再order by和limit混用的时候,出现了排序的混乱情况。
    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    浅谈ASP.NET核心对象
    SQL MID() 函数
    如何查看linux系统CPU利用率 简单
    canvas 学习笔记 简单
    linux 为用户设定、修改密码 passwd 简单
    转crontab用法(例子) 简单
    mongodb加入系统服务 简单
    转导出csv文件时,处理分隔符问题 简单
    tar和gzip、unzip命令详解 简单
    linux创建用户命令 简单
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/14626473.html
Copyright © 2020-2023  润新知