MySQL在线运行

版本:

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

                        
以下是用户最新保存的代码
单表查询1-2024 发布于:2024-12-01 14:28 用于测试mysql 发布于:2024-11-27 23:45 宿舍管理系统 发布于:2024-11-22 12:15 聚合函数 与 模式匹配 发布于:2024-11-21 11:09 实验二代码 发布于:2024-11-20 14:13 导论homework 发布于:2024-11-18 18:33 学生表操作 发布于:2024-11-18 18:29 2024-11-18北京监管局8家-老系统 发布于:2024-11-18 14:50 2024-11-18北京监管局8家-新系统 发布于:2024-11-19 09:53 这是一段测试mysql ascii比较特性的代码 发布于:2024-11-17 09:21 测试数据库 发布于:2024-11-13 13:39 软件技术基础 发布于:2024-11-12 11:39 数据库创造 发布于:2024-11-08 18:01 测试sql 发布于:2024-11-04 17:30 update代码测试1 发布于:2024-11-01 16:08 零件售卖数据库 发布于:2024-11-01 09:41 计算思维课程测试 发布于:2024-10-30 22:25 小要花名册 发布于:2024-10-29 09:22 实打实打算 发布于:2024-10-29 00:14 烦烦烦方法 发布于:2024-10-28 17:00 找出每个学校GPA最低的同学 发布于:2024-10-24 19:10 最新的相互关注的用户对 发布于:2024-10-24 17:30 取一下每天按性别分布的日活 发布于:2024-10-24 17:13 取出每天时长最长的十个用户 发布于:2024-10-24 17:02 取2022年11月每日活跃用户数及次日留存 发布于:2024-10-24 17:00 UPDATAE学生表 UPDATE S SET Age = Age +1 DELETE FROM Teach WHERE TN =’刘伟’ 发布于:2024-10-22 12:43 查询goods表 发布于:2024-10-19 17:19 编写DML语句向上述六个表插入样本数据记录 发布于:2024-10-19 16:45 # 使用SELECT语句查询users表,列出用户的所有信息。 发布于:2024-10-19 16:30 数据库项目四 发布于:2024-10-17 09:13 网上商品系统模型 发布于:2024-10-28 14:38 -- mysql 练习了 查询 where 发布于:2024-10-13 15:07 内连接,左连接,右连接 发布于:2024-10-11 11:25 数据库项目三 发布于:2024-10-10 09:14 库存对账代码 发布于:2024-10-09 18:49 时间格式转换 发布于:2024-09-30 11:23 时间戳类型测试 发布于:2024-09-29 01:37 CREATE TABLE Player ( PlayerID INT PRIMARY KEY, Username VARCHAR(255) NOT NULL, Avatar VARCHAR(255), Nickname VARCHAR(255), Password VARCHAR(255) NOT NULL, TotalGamesPlayed INT, GamesLost INT, GamesWon INT ); 发布于:2024-09-28 14:46 实验报告四 发布于:2024-09-27 10:42 这是一个小测试 发布于:2024-09-26 23:15 数据表操作 发布于:2024-09-26 11:03 数据表的修改及数据的操作 发布于:2024-09-25 14:37 数据库表和数据 发布于:2024-09-23 11:24 数据库笔记代码 发布于:2024-09-23 11:22 mysql code 发布于:2024-09-21 17:20 数据库cao'z 发布于:2024-09-26 08:32 南京九维 设备列表 发布于:2024-09-18 11:50 POC语句 发布于:2024-09-11 19:41 mysql学习1 发布于:2024-09-10 23:46 # mysql 题目 # 发布于:2024-10-31 16:02 [更多]
显示目录

处理重复数据



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