MySQL在线运行

版本:

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

                        
以下是用户最新保存的代码
查询歌曲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 查询歌单数据 发布于:2025-03-26 17:15 查询TME录音词曲数据 发布于:2025-03-26 17:13 cms上架量查询 发布于:2025-03-26 17:12 cms指定付费类型查询 发布于:2025-03-26 17:11 oppo定制数据查询 发布于:2025-03-26 17:08 oppo定制2.0数据查询 发布于:2025-03-26 17:00 查询歌单oppo数据 发布于:2025-03-26 16:59 查询歌曲语言 发布于:2025-03-26 16:58 查询标签id 发布于:2025-03-26 16:45 查询标签数据 发布于:2025-03-26 16:44 SQL语句约束 发布于:2025-03-26 17:59 mysql演示 发布于:2025-03-25 11:36 用户登录表 发布于:2025-03-25 00:34 创建数据库!! 发布于:2025-03-24 07:54 学生代码保存 发布于:2025-03-23 21:15 测试用的项目 发布于:2025-03-23 12:37 sql practice 发布于:2025-03-21 16:45 学习sql 发布于:2025-03-21 10:58 ceshi a a 发布于:2025-03-21 11:52 MySQL测试 发布于:2025-03-21 09:35 ### 防守打法是否 发布于:2025-03-25 09:12 测试代码使用 发布于:2025-03-18 18:18 金粉世家合肥市fdsfsdfs 发布于:2025-03-18 09:02 在线数据库 发布于:2025-03-17 18:48 常见数分题,DAU 发布于:2025-03-17 16:40 生成数据表 发布于:2025-03-16 19:22 数据库原理与应用-教学材料 发布于:2025-03-16 19:20 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-14 20:16 # 学生数据库基础数据 发布于:2025-03-06 18:55 [更多]
显示目录

处理重复数据



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