Mysql删除重复数据

数据准备

在这里插入图片描述
说明:张三和李四有两条数据重复了,赵六同学不在这个班了

删除赵六

DELETE FROM exam WHERE id = '4';

结果:
在这里插入图片描述
注意事项

  • 删除表的内容而不是表
    DELETE 语句是从表中删除行,甚至是删除表中所有行。但DELETE不删除表本身

  • 更快的删除
    如果想从表中删除所有行,不要使用 DELETE 。可使用 TRUNCATE TABLE 语句,它完成相同的工作,但速度更快( TRUNCATE 实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。

DELETE 删除整行而不是删除列。为了删除指定的列,请使用 UPDATE 语句。

比如:为了删除某个列的值,可设置它为 NULL

UPDATE exam SET name = 'NULL' ; 

在这里插入图片描述
当然这里仅仅是为了突出DELETE是删除所有行,而不是列。

删除重复的数据

我们看到张三和李四各有两条数据重复了,如何删除重复的数据呢?

  • 第一步:复制原表
CREATE TABLE exam2 LIKE exam;
  • 第二步:去重数据导入新表
INSERT INTO exam2 (NAME, english, chinese, math) SELECT
	NAME,
	english,
	chinese,
	math
FROM
	exam
GROUP BY
	NAME,
	english,
	chinese,
	math;
  • 删掉原表
DROP TABLE exam;
  • 重命名新表为原表名
ALTER TABLE exam2 RENAME TO exam;

后记

有强迫症的朋友在删除完自增长id后发现中间有断层,很难受,非得要按顺序来。比如上面id就缺少了4,那么如何重新排序自增长id呢?

重新排序自增长id,三步骤

  • 删除原有主键
ALTER TABLE `exam` DROP `id`;
  • 添加新主键字段
ALTER TABLE `exam` ADD `id` MEDIUMINT( 8 ) NOT NULL FIRST;
  • 设置新主键
ALTER TABLE `exam` MODIFY COLUMN `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值