MySQL在线运行

版本:

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

                        
以下是用户最新保存的代码
数据库带啊吗 发布于:2024-05-02 13:14 大数据技术应用基础 发布于:2024-04-30 09:51 大数据技术应用基础作业 发布于:2024-04-29 18:01 大数据与技术 发布于:2024-04-25 18:49 ## ### ## # 大数据技术 发布于:2024-04-25 17:10 # ZDFGHHJ 发布于:2024-04-25 17:09 # zy2005621 发布于:2024-04-25 17:07 # hfrhbhi 发布于:2024-04-25 16:50 ### ## # ### ## ### ## 大数据技术 发布于:2024-04-25 16:46 大数据与应用技术 发布于:2024-04-25 16:34 第二次大数据技术 发布于:2024-04-25 16:29 第二个代码 发布于:2024-04-25 17:28 # 大数据与会计作业2 发布于:2024-04-25 17:10 id | name | address | city ---|--- 1 | 刘一 | 郑十家隔壁 | 河南 2 | 陈二 | 李四家隔壁 | 安徽 3 | 张三 | 白娘子家隔壁 | 杭州 发布于:2024-04-25 00:38 组合类活期+通知存款>90% 发布于:2024-04-26 13:50 InnoDB引擎测试 发布于:2024-04-24 15:40 da shu ju ji shu 发布于:2024-04-23 21:49 - account receivable 发布于:2024-04-23 10:53 大数据技术应用基 发布于:2024-04-23 09:54 是书上代码 发布于:2024-04-30 09:09 专项季报脚本有问题的三张表--李洁姐更新版本 发布于:2024-04-23 14:43 点位绑定SQL 发布于:2024-04-24 09:15 批量更新名称 发布于:2024-04-20 18:44 员工信息表 发布于:2024-04-18 21:51 第四个任务 发布于:2024-04-18 22:08 你妈的daem 发布于:2024-04-18 21:44 第三个任务 发布于:2024-04-18 21:33 第二个任务 发布于:2024-04-18 21:37 2024.4.18 代码 table1.2.3 发布于:2024-04-18 22:00 ### daima3 发布于:2024-04-18 21:22 股票基本信息TABLE2 发布于:2024-04-18 20:40 ### daiam2 发布于:2024-04-18 20:45 股票基本信息TABLE1 发布于:2024-04-18 20:17 苏珊的油饼啊 发布于:2024-04-18 20:51 职教云4.2数据储存 发布于:2024-04-18 21:50 股票基本信息表TABLE1 发布于:2024-04-18 19:40 MySQL yuyan 发布于:2024-04-18 21:49 项目4.2/4.3 发布于:2024-04-18 21:51 第一个任务 发布于:2024-04-18 21:06 课程4-2数据存储 发布于:2024-04-18 22:09 职教云4.2数据存储 发布于:2024-04-18 19:34 立库库位使用情况(标准箱库位数,原箱库位数,未写) 发布于:2024-04-24 09:15 贵阳相关SQL语句 发布于:2024-04-21 22:07 create dastbase 发布于:2024-04-18 16:19 春风吹吃饭 发布于:2024-04-18 17:39 2024-4-18(平安银行代码) 发布于:2024-04-18 15:46 SQL的学习 发布于:2024-04-18 15:30 数据储存20240418 发布于:2024-04-18 15:16 MES拉动需求,udf15为Y(报表未添加),筛选条件,仅不查询任务完成 发布于:2024-04-24 09:15 专项产品季报脚本(存续+资产口径中间表) 发布于:2024-04-22 10:40 [更多]
显示目录

处理重复数据



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