mysql 设置 distinct_Navicat使用教程:在MySQL中使用SELECT DISTINCT消除重复行

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

MySQL为处理重复数据提供了无数种选择。大多数可以使用一个语句进行更新或删除。但是,有时必须发出多个命令才能完成任务。今天的博客将提供一个解决方案,它使用一个临时表和一个SELECT DISTINCT查询。

MySQL中的永久表与临时表

需要注意的是,我们今天将在这里创建的临时表与MySQL中的真正临时表不同,因为我们没有向CREATE TABLE 语句中添加临时关键字。

在MySQL中,临时表是一种特殊的表类型,它允许您存储一个临时结果集,您可以在一个会话中重复使用多次。当使用单个SELECT语句查询数据是不可能的或很昂贵时,临时表就派上用场了。像使用TEMPORARY关键字创建的临时表一样,我们的“temporary”表将存储SELECT查询的即时结果,以便我们可以发出一个或多个附加查询来完全处理数据。然后我们将用临时表替换目标表。

从amalgamated_actors表中删除重复行

在如何删除MySQL(第3部分)博客中具有不同ID的重复行中,我们成功地删除了包含重复名称的行。但是,这仍然会留下ID和名称相同的行,换句话说,整个行都是重复的。例如,我们可以在下面的结果集中看到“22 Jennifer Davis”出现了两次:id   first_name   last_name

---------------------------------------------------

10PENELOPEGUINESS

14EDCHASE

22JENNIFERDAVIS

23JOHNNYLOLLOBRIGIDA

27BETTENICHOLSON

34GRACEMOSTEL

41NICKWAHLBERG

39JOESWANK

23CHRISTIANGABLE

22JENNIFERDAVIS

这是一个理想的临时表方法的候选。

MySQL提供了特殊的CREATE TABLE ... LIKE命令,基于另一个表的定义创建一个空表,包括在原始表中定义的任何列属性和索引。

因此,我们可以基于合并后的演员表创建一个表,如下所示:-- Create temporary table

CREATE TABLE wp.temp_table LIKE wp.amalgamated_actors;

下面是将amalgamated_actors表中的所有数据复制到temp_table中的语句:INSERT INTO wp.temp_table

SELECT DISTINCT * FROM wp.amalgamated_actors;

SELECT DISTINCT子句是删除重复行的关键。

最后,我们需要重命名原始表,以便用临时表替换它,并删除原始表:-- Rename and drop

RENAME TABLE wp.amalgamated_actors TO wp.old_amalgamated_actors,

wp.temp_table TO wp.amalgamated_actors;

DROP TABLE wp.old_amalgamated_actors;

现在,JENNIFER DAVIS只有一排:id   first_name   last_name

---------------------------------------------------

10PENELOPEGUINESS

14EDCHASE

22JENNIFERDAVIS

23JOHNNYLOLLOBRIGIDA

27BETTENICHOLSON

34GRACEMOSTEL

41NICKWAHLBERG

39JOESWANK

23CHRISTIANGABLE

我们原来的amalgamated_actors表已经不复存在了,取而代之的是“temp”表。

使用唯一约束删除重复行

在下一篇关于处理重复数据的文章中,我们将使用唯一约束来删除具有重复名称字段的行,不管ID是否重复。

购买Navicat Premium正版授权,请点击“咨询在线客服”哟!

9b965aac1ed1e8e6cdc09754c10dae79.png

标签:数据库mysqloracle

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

a6e1590ae4b228073faff3806334194e.png0

好文不易,鼓励一下吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值