标题或url相同?
如果有:
1 呵呵 http://1
2 呵呵 http://2
3 哈哈 http://2
4 哈哈 http://3要保留哪个?

解决方案 »

  1.   

    update tt a 
    left join
    (select title,min(time) as mi from tt group by title) b
    on a.title=b.title and a.time=b.mi
    set a.del=if(b.title is null,1,0)
      

  2.   


    版主太牛B了
    搞定了就是有个问题,这样子搞定了标题,接下来看link相同的,同样要把time比较早的标记为0.其他的为1,怎么办呢?
      

  3.   

    把TITLE修改成link不行?
    select link,min(time) as mi from tt group by link
      

  4.   


    这样子有bug
    标题或url相同?
    如果有:
    1 呵呵 http://1
    2 呵呵 http://2
    3 哈哈 http://2
    4 哈哈 http://3要保留哪个?如下图,运行了
    update tt a 
    left join
    (select title,min(time) as mi from tt group by title) b
    on a.title=b.title and a.time=b.mi
    set a.del=if(b.title is null,1,0)
    然后把title换成link。
    运行后。
    出现如下情况了:
      

  5.   

    用文本贴建表及插入记录的SQL语句,以及要求结果出来
      

  6.   

    LZ的需求本身可能有个漏洞id title link time
    1 你好 http://123 2014/6/12 0:00
    2 你好 http://456 2014/6/12 0:01
    3 不好 http://456 2014/6/12 0:00
    4 不好 http://456 2014/6/12 0:02最后结果,只有id=1的保留了下来wwwwb的小bug可以这样子修复(不考虑效率)
    UPDATE tt t1
      LEFT JOIN 
    (
    SELECT group_concat(id) ids, title, min(time) as mintime from tt
     GROUP BY title
    ) t2
        ON t1.title = t2.title
       AND t1.time = t2.mintime
       SET t1.del = IF(find_in_set(id, ids) = 1, 0, 1)
      

  7.   

    上面我举的四条数据,是指先后按照相同title, link,先后逻辑删除后录入的数据。所以,在update的时候,那个子查询,可能要限定del条件
      

  8.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。