一张多用户的通讯记录表,主要是手机信息,每个用户可以建立自己的联系人组。
原来数据对数据没有校验,用户可以在一个组里面输入重复手机号码,如果数据量大,会造成数据重复。
所以要做一个唯一性的索引,如下:
create unique index inx_uniq_cellphone_onegroup on addresslist (cellphone, groupid, operatorid);
目的是保证每个用户的每个组里面,不能有同样的cellphone。
但是建立的时候出错,因为里面原来有重复的数据。
清除重复的数据,用如下的sql,如果重复的就删除rowid不等于max(rowid)的那条记录。
delete addresslist where rowid not in (select rowid1 from addresslist a, (select cellphone, groupid, operatorid, max(rowid) rowid1, count(*) from addresslist group by cellphone, groupid, operatorid) b where a.cellphone = b.cellphone and a.groupid = b.groupid and a.operatorid = b.operatorid and a.rowid = b.rowid1)
《“删除表中重复数据的sql”》 有 1 条评论
十四让你写的吧?/qiang