delete from bbs_threads 
where subject in (select subject from bbs_threads group by subject having count(subject)>1) 
and tid not in (select min(tid) from bbs_threads group by subject having count(subject)>1)字段 TID 就是 bbs_threads (主题表) 的主题ID
字段 subject  就是 主题标题我的目的是删除重复标题的帖子,只保留ID最小的..求助

解决方案 »

  1.   

    补充下MYSQL版本和开发工具
    MYSQL是5.0的  开发工具是 PHPMYADMIN
      

  2.   

    DELETE A
    FROM bbs_threads AS A
        JOIN (
             SELECT MIN(id) AS id,subject
             FROM bbs_threads
             GROUP BY subject
        ) AS B
    ON A.subject=B.subject AND A.id>B.id;--看看支不支持这种写法DELETE A
    FROM bbs_threads AS A
    WHERE NOT EXISTS(SELECT * FROM bbs_threads
                     WHERE A.subject=subject
                        AND id<A.id);
      

  3.   

    没办法,MySQL不能在delete中再包含相同的表在子查询中。换成这句就行了,相同的功能。
    delete b1 from bbs_threads b1 ,bbs_threads b2 where b1.subject=b2.subject and b1.tid>b2.tid;
      

  4.   

    在表上建立 subject 的索引 以提高查询速度。
      

  5.   

    重新生成一个新表如何?
    贴你的记录及要求结果出来看看
    假设只有两个字段
    select subject,min(id) as newid from tt group by subject
      

  6.   

    表的字段比较多 但是主要应用的就是 tid (唯一ID) 和 subject (标题) 这两个字段
    表名 bbs_threads表数据结构示意图tid         subject
    1             标题一(重复)
    2             标题二
    3             标题三(重复标题)
    4             标题一(重复)
    5             标题五
    6             标题三(重复标题)
    现在我需要删除重复标题,只保留字段 tid 最小的值
    也就是得到结果
    tid         subject
    1             标题一(重复)
    2             标题二
    3             标题三(重复标题)
    5             标题五求执行效率高的SQL语句   多谢大家的帮忙!
      

  7.   


    create table newtt as
    select a.* from a
    inner join
    (select subject,min(tid) as newid from tt group by subject) b
    on a.subject=b.subject and a.tid=b.newidOR
    DELETE A FROM TT A INNER JOIN
    (select subject,min(tid) as newid from tt group by subject) b
    on a.subject=b.subject and a.tid=b.newid估计前一种要快一些
      

  8.   

    delete from bbs_threads
     where tid in 
    (
       select a.tid from bbs_threads as a
       where a.tid>(
          select min(b.tid) from bbs_threads as b where a.tid=b.tid
          ))