mysql分页查询并过滤部分字段重复数据的问题
表结构如下
id AUTO_INCREMENT
content  varchar
post_data  timestamp其中content内容可以相同
现在的问题是在使用分页技术情形下,只获取content中的重复内容中的最新的一条记录想到的两个方案
1.先获取查询数据的所有id,再根据id来分页抓取,但这样就违背分页的初衷,并且如果返回的数据较多,客户端第一次查询有延迟
2.再增加一个字段is_dup用来表识content内容是否重复,在插入数据的时候,查询一下是否有重复content,如果有重复,这把之前的record is_dup置1,但感觉这种方案效率太低。

解决方案 »

  1.   

    一般情况下content不会相同吧  可以直接取一页 然后又重复的再取一页过滤下
      

  2.   

    content相同的情况是常见的,做的是一个信息发布的功能,分显示、发布、搜索三个部分。显示是显示所有信息,发布是可以发布重复信息,搜索是过滤掉重复信息并抓取最新的信息,上面的所说的问题是属于搜索部分的
      

  3.   

    没有找到更好的方式,所以还是采用方案2,测试下来效率还可以。insert新数据的时候,如果存在重复的content,则获取max(id),在使用其id set is_dup = 1
      

  4.   

    给楼主出个主意,使用similar_text()外加分词来实习,这样效率明显会快很多。
    similar_text() 检测相似度。
      

  5.   

    试一试这个:
    select
    *
    from
    (
        select *
        from
        table
        order by timestamp desc
    ) t
    group by t.content
      

  6.   

    使用赵兄的语句由于数据量大导致出现error
      

  7.   

    要不就把limit加到里面的子查询,不过这样也有一个问题,查出的记录数不是固定的。正在想更好的办法ing。不过话说回来,你的方案二也不失为一个好选择,开发嘛,能尽快解决问题才是王道。