zoukankan      html  css  js  c++  java
  • 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混用的时候,出现了排序的混乱情况。
    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    mongoDb
    profile ,explain,
    header 里面的contenttype
    group by,distinct的使用(30万数据测试)
    ubuntu 12.04 mysql 错误 Errcode 13
    php curl,爬虫
    explain mysql
    php 文件的函数
    create User,grand,Load data file
    android 按钮点击测试
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/14626473.html
Copyright © 2011-2022 走看看