十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql多个字段如何去重复的数据
黄山网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
MySQL查询重复字段,及删除重复记录的方法
数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。如果仅仅是查找数据库中name不重复的字段,很容易:
SELECT
min(`id`),`name`
FROM
`table`
GROUP
BY
`name`;
添加字段
drop procedure if exists add_column_if;
delimiter $$
create procedure add_column_if()
begin
declare
iCnt int;
select count(*) into iCnt from information_schema.columns
where table_schema=(select database())
and table_schema='BONDCONTRACE_TEST'
andcolumn_name='AAA';
if (iCnt=0) then
alter table bondcontrac_test add AAA varchar(10) default null;
end if;
end;
call add_column_if;
drop procedeure add_column_if; $$
delimiter;
加索引
drop procedure if exits add_index_id;
delimiter $$
create procedure add_index()
begin
declare iCint int;
select count(*) from information_schema.statistcs
where table_schema=''
and table_name=''
and index_name=''
and column_name in ('','')
if (iCint=0) then
alter table tablename add key index_name('','');
end if;
end'
call add_index_if;
drop procedure add_index_if;$$
delimiter;
实现的方法和详细的操作步骤如下:
1、第一步,使用navicat连接到mysql数据库并创建一个新的用户表,见下图,转到下面的步骤。
2、第二步,完成上述步骤后,填写一些测试内容以演示测试结果,见下图,转到下面的步骤。
3、第三步,完成上述步骤后,选择用户名,然后单击鼠标右键以选择“设计表”选项,见下图,转到下面的步骤。
4、第四步,完成上述步骤后,切换到设计表中的“索引”标签,见下图,转到下面的步骤。
5、第五步,完成上述步骤后,开始添加索引。如果不需要索引名称,则默认情况下可以为空。该工具将自动生成与字段名称相同的名称。单击字段后面的按钮以显示选择框,选择需要唯一约束的字段。在这里,登录到名称字段,见下图,转到下面的步骤。
6、第六步,完成上述步骤后,选择“索引类型”选项,唯一约束必须选择“Unique”类型,见下图,转到下面的步骤。
7、第七步,完成上述步骤后,将第三条数据的登录名修改为与第二条数据相同,然后单击下面的复选标记按钮进行保存,见下图,转到下面的步骤。
8、第八步,完成上述步骤后,保存时将报告错误,提示“Duplicate entry 'bb' for key 'login_name'”,重复的登录名无法成功保存,表明添加的唯一约束已生效,见下图。这样,就解决了这个问题了。
思路:先抽出有重复的C3 C4 C5,然后再和主表相连取出数据
解法:按C3 C4 C5 GROUP BY,取出行数大于1的,即为有重复的C3 C4 C5
SQL语句:
SELECT T1.*
FROM 表名 T1
INNER JOIN
(
SELECT C3,C4,C5
FROM 表名
GROUP BY C3,C4,C5
HAVING COUNT(1) 1
) T2
ON T1.C3 = T2.C3
AND T1.C4 = T2.C4
AND T1.C5 = T2.C5
不好意思不是很懂mysql语句,不知道会不会有的地方语法不同,但猜想方法还是可以用的。
for($i=1;$i3;$i++) {
$sql = "SELECT * FROM table WHERE id='$i'";
while($result = mysql_fetch_array(mysql_query($sql))) {
$data[] = $result;
}
foreach($data as $k=$v){
$sum += $v;
}
mysql_query("DELETE FROM table WHERE id=$i");
mysql_query("INSERT INTO table (id,view) VALUES ('$i','$sum')");
}