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混用的时候,出现了排序的混乱情况。
    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    python-套接字编程之udp
    python-套接字编程之tcp
    用脚本获取windows的mac地址
    电脑控制安卓手机(手机投屏)
    人体内脏分布图
    电子发票打印出来太大了,怎么办?
    局域网内搭建各部门文件共享
    樊登读书会:《善战者说:孙子兵法与取胜法则十二讲》
    健康饮食——百万教程
    减肥十律
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/14626473.html
Copyright © 2011-2022 走看看