MySQL在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
执行以下SQL脚本(MySQL) 发布于:2025-04-19 00:14 第四章代码 发布于:2025-04-18 11:14 数据库实验 发布于:2025-04-17 22:26 test for AI trainining 发布于:2025-04-17 16:35 女大自用例表 发布于:2025-04-19 15:07 测试代码用途 发布于:2025-04-16 17:48 创建book表 发布于:2025-04-16 22:11 在bookdb数据库中进行简单查询 发布于:2025-04-16 11:11 创建bookdb数据库 发布于:2025-04-16 11:49 MD5密码存储 发布于:2025-04-15 21:30 连接嵌套查询 发布于:2025-04-15 09:33 20250413,人工智能培训师三级课程代码示例 发布于:2025-04-13 15:23 人工智能元数据库 发布于:2025-04-13 11:29 人工智能高级 发布于:2025-04-13 13:46 first commit 发布于:2025-04-19 08:47 二级电池&硅片新增资金占用天数 发布于:2025-04-10 08:59 编写交叉连接代码 发布于:2025-04-09 22:40 实验二代码 发布于:2025-04-09 16:59 二级组件聚合版 发布于:2025-04-09 16:35 二级组件未聚合版 发布于:2025-04-09 16:14 垃圾桶数据库 发布于:2025-04-08 16:33 部门工资最高的人 发布于:2025-04-08 14:37 exists的用法 发布于:2025-04-08 12:23 内连接查找比领导工资高的员工 发布于:2025-04-08 11:20 count()的用法 发布于:2025-04-07 12:06 自动增长的 发布于:2025-04-07 19:13 员工信息表 发布于:2025-04-15 11:27 图书管理系统 发布于:2025-04-15 20:05 测试能不能下载 发布于:2025-04-03 20:18 查询好友的表 发布于:2025-04-03 18:01 数据库技术与应用 发布于:2025-04-02 22:50 数据库技术与应用 发布于:2025-04-09 22:52 # 修改的最终代码 发布于:2025-04-03 17:24 职员信息登记库 发布于:2025-04-02 17:55 好好好哈皮 发布于:2025-04-02 10:46 2025年4月1号 发布于:2025-04-01 09:38 数据库上课’ 发布于:2025-04-08 08:29 实验报告操作代码 发布于:2025-03-30 17:43 数据库课程代码 发布于:2025-03-28 15:23 中央曲库元数据信息 发布于:2025-03-27 14:25 查询歌曲channel 发布于:2025-03-26 17:28 查询歌曲码流 发布于:2025-03-26 17:28 查询op可用歌曲数量 发布于:2025-03-26 17:25 查询某个厂牌是否在op库 发布于:2025-03-26 17:24 查询歌曲元数据信息 发布于:2025-03-26 17:23 在op可用范围,歌曲不可用数据 发布于:2025-03-26 17:22 导出歌单封面链接 发布于:2025-03-26 17:21 根据stationID,导出歌单下歌曲的channel不是黑渠道&“gn,mz,ss,yi”的、或白渠道包含“gn,mz,ss,yi”的、或channel为空的,404歌曲数量 发布于:2025-03-26 17:19 查询电台数据 发布于:2025-03-26 17:18 查询榜单数据 发布于:2025-03-26 17:16 [更多]
显示目录

处理重复数据



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

处理重复数据

有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。

本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。

防止表中出现重复数据

你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。

让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功,并抛出错。

INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

以下实例使用了INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。 而REPLACE INTO如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

另一种设置数据的唯一性方法是添加一个UNIQUE索引,如下所示:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

查询重复记录

select user_name,count(*) as count from user_table group by user_name having count>1;

select * from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

统计重复数据

以下我们将统计表中 first_name 和 last_name的重复记录数:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

以上查询语句将返回 person_tbl 表中重复的记录数。 一般情况下,查询重复的值,请执行以下操作:

  • 确定哪一列包含的值可能会重复。
  • 在列选择列表使用COUNT(*)列出的那些列。
  • 在GROUP BY子句中列出的列。
  • HAVING子句设置重复数大于1。

过滤重复数据

如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl
    -> ORDER BY last_name;

你也可以使用 GROUP BY 来读取数据表中不重复的数据:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

删除重复数据

如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);
由JSRUN为你提供的MySQL在线运行、在线编译工具
        JSRUN提供的MySQL 在线运行,MySQL 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout