1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

删除标题重复的条目(保留一条)

本帖由 harbinbeer2006-07-09 发布。版面名称:源码讨论

  1. harbinbeer

    harbinbeer New Member

    注册:
    2006-06-10
    帖子:
    88
    赞:
    0
    思路:
    1.以phome_ecms_news表为基础,建立相同结构的临时表一份(唯一不同的是以title为主键,这样标题就不会重复)
    2.将phome_ecms_news内容导入新表,在导入过程中,自动抛弃标题相同(也就是title主键相同)的条目
    3.将phome_ecms_news清空
    4.将临时表内容导回到phome_ecms_news

    sql语句:

    /****建立临时表(此语句摘抄于ecms安装文件,并稍加改动——主要是设置title为主键,注意斜体部分)****/
    create table phome_wm_mjj (id int(11) NOT NULL , classid smallint(6) NOT NULL, onclick int(11) NOT NULL, newspath varchar(50) NOT NULL, keyboard varchar(255) NOT NULL, keyid varchar(255) NOT NULL, userid int(11) NOT NULL, username varchar(30) NOT NULL, ztid text NOT NULL, checked tinyint(1) NOT NULL, istop tinyint(4) NOT NULL, truetime int(11) NOT NULL, ismember tinyint(1) NOT NULL, dokey tinyint(1) NOT NULL, userfen int(11) NOT NULL, isgood tinyint(1) NOT NULL, titlecolor varchar(10) NOT NULL, titlefont varchar(255) NOT NULL, titleurl varchar(200) NOT NULL, filename varchar(60) NOT NULL, filenameqz varchar(28) NOT NULL, fh tinyint(1) NOT NULL, groupid smallint(6) NOT NULL, newstempid smallint(6) NOT NULL, plnum int(11) NOT NULL, firsttitle tinyint(1) NOT NULL, checkuser text NOT NULL, docheckuser text NOT NULL, viewcheckuser text NOT NULL, returncheck tinyint(1) NOT NULL, notdocheckuser text NOT NULL, totaldown int(11) NOT NULL, title varchar(200) NOT NULL, newstime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, titlepic varchar(200) NOT NULL, wplay tinyint(1) NOT NULL, ftitle varchar(200) NOT NULL, smalltext text NOT NULL, writer varchar(30) NOT NULL, befrom varchar(60) NOT NULL, newstext mediumtext NOT NULL, closepl tinyint(1) NOT NULL, havehtml tinyint(1) NOT NULL, PRIMARY KEY (title), KEY classid (classid));
    /****将原有数据导入临时表(这里的关键是ignore,没有这个是不能完整导入滴,注意斜体部分)****/
    insert ignore into phome_wm_mjj select distinct * from phome_ecms_news;
    /****清空原数据表****/
    truncate phome_ecms_news;
    /****将临时表数据复制到原表****/
    insert into phome_ecms_news select distinct * from phome_wm_mjj;
    /****清空临时表(可选)****/
    truncate phome_wm_mjj;
    /****或删除临时表(可选)****/
    drop table phome_wm_mjj;

    在我机器上测试成功,环境win2003+php4.4+mysql4.0.2.6

    按照这个思路,可以将所有mysql数据库中特定字段重复的条目过滤掉:D

    特别注意:
    实例中的临时表名phome_wm_mjj请替换成自己需要的名字,否则有人自杀或者被人追杀都不太好:p
     
  2. 极品蜗牛

    极品蜗牛 New Member

    注册:
    2005-10-20
    帖子:
    673
    赞:
    2
    谢谢,暂时用不上...
     
  3. zmnet

    zmnet Well-Known Member

    注册:
    2006-05-03
    帖子:
    7,809
    赞:
    62
    不错,收藏以下
     
  4. 禾火木风

    禾火木风 New Member

    注册:
    2006-03-15
    帖子:
    2,212
    赞:
    8
    收藏。。。。正需要
     
  5. 西子宜

    西子宜 Well-Known Member

    注册:
    2005-09-05
    帖子:
    15,739
    赞:
    62
    靠,想当初我手工
     
  6. Kevin

    Kevin New Member

    注册:
    2005-10-23
    帖子:
    12,728
    赞:
    55
    收藏,谢谢!