MySQL在线运行

版本:

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

                        
以下是用户最新保存的代码
sql demo 发布于:2025-03-14 13:13 这是一个数据库初识 发布于:2025-03-13 11:21 商业分析常见面试题5 发布于:2025-03-12 18:39 商业分析常见面试题4 发布于:2025-03-12 18:12 商业分析常见面试题3 发布于:2025-03-12 17:45 商业分析常见面试题2 发布于:2025-03-12 17:06 张三李四和我 发布于:2025-03-11 19:58 订单测试11221 发布于:2025-03-11 19:46 经典日活数分面试题 发布于:2025-03-11 17:57 经典日活数据分析面试题 发布于:2025-03-11 14:43 机会客户来看 发布于:2025-03-11 09:03 我的sql实例代码 发布于:2025-03-10 18:17 # 学生数据库基础数据 发布于:2025-03-06 18:55 ## 代码简介 用于MySQL的学习 发布于:2025-03-07 09:39 mysql 外键连接 发布于:2025-03-04 15:00 学习数据库语言 发布于:2025-03-04 14:35 MQL实验代码 发布于:2025-03-03 20:35 Apples(ID Name Color Origin Sweetness) 发布于:2025-03-03 08:24 笑笑的代码啊 发布于:2025-03-02 15:58 笑笑的代码 发布于:2025-03-02 15:57 阿飞牛逼飞起 发布于:2025-03-02 09:00 数据库技术 发布于:2025-03-01 19:21 人机的崩溃边缘操作 发布于:2025-03-01 15:23 我不知道就想保存 发布于:2025-02-28 23:46 我是你爸爸 发布于:2025-02-28 17:32 时海反响,须弥藏芥子 发布于:2025-02-28 17:25 Example2 Apples 发布于:2025-02-28 09:27 Example1 Products 发布于:2025-03-03 15:21 数据库的代码 发布于:2025-02-27 22:05 人机不要用 发布于:2025-02-27 19:42 插入数据命令 发布于:2025-02-25 16:38 创建数据库名 发布于:2025-02-25 16:33 多行多列求和计算 发布于:2025-02-21 16:02 查询每个部门的最高薪资 发布于:2025-02-21 15:35 客户购买行为分析 发布于:2025-02-21 11:05 联结查询:连接数据的桥梁 发布于:2025-02-21 10:41 测试窗口函数 发布于:2025-02-18 19:08 数据库表设计 发布于:2025-02-11 14:53 提取深圳市男女特征 发布于:2025-02-11 14:05 连续登录用户 发布于:2025-02-08 13:33 推荐内容准确的用户平均评分 发布于:2025-02-08 09:19 SQL1 每个月Top3的周杰伦歌曲 发布于:2025-02-07 17:35 这是一个MYSQL代码 发布于:2025-01-24 17:16 测试MySQL FLOAT类型 发布于:2025-01-13 15:17 在线测试sql 发布于:2025-01-07 18:51 费达二百v发的 发布于:2025-01-15 17:36 各机构资金来源总表 发布于:2025-01-06 09:56 我的MySQL测试使用的代码 发布于:2025-01-01 21:55 mysql环境 发布于:2024-12-31 00:04 ### # 这是我的第一个mysql文件****** ****** 发布于:2024-12-29 20:48 [更多]
显示目录

处理重复数据



学习嵌入式的绝佳套件,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