我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL查询重复数据

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL查询重复数据

MySQL查询重复数据

 

假设有一个用户表 user,数据如下:

1、查询表中 uid 重复的数据

SELECT
  id,
  uid,
  name
FROM USER
WHERE uid IN (SELECT
    uid
  FROM USER
  GROUP BY uid
  HAVING COUNT(uid) > 1);

2、查询表中重复数据,排除最小id

SELECT
  id,
  uid,
  name
FROM user
WHERE uid IN (SELECT
    uid
  FROM user
  GROUP BY uid
  HAVING COUNT(uid) > 1)
AND id NOT IN (SELECT
    MIN(id)
  FROM user
  GROUP BY uid
  HAVING COUNT(uid) > 1);

3、删除表中重复数据,如果是重复数据,则保留id最小的一条

DELETE
  FROM USER
WHERE id IN (SELECT
      u.id
    FROM (SELECT
        id
      FROM USER
      WHERE uid IN (SELECT
          uid
        FROM USER
        GROUP BY uid
        HAVING COUNT(uid) > 1)
      AND id NOT IN (SELECT
          MIN(id)
        FROM USER
        GROUP BY uid
        HAVING COUNT(uid) > 1)) AS u);

4、遇到的问题:

一开始直接使用以下语句删除,报错:You can’t specify target table ‘user’ for update in FROM clause

 

DELETE
  FROM USER
WHERE id IN (SELECT
      id
    FROM USER
    WHERE uid IN (SELECT
        uid
      FROM USER
      GROUP BY uid
      HAVING COUNT(uid) > 1)
    AND id NOT IN (SELECT
        MIN(id)
      FROM USER
      GROUP BY uid
      HAVING COUNT(uid) > 1));

 

查资料后得知:
因为在 MYSQL 里,不能先 select 一个表的记录,在按此条件进行更新和删除同一个表的记录。
解决办法:
将 select 得到的结果,再通过中间表 select 一遍。
SQL如下:

 

DELETE
  FROM USER
WHERE id IN (SELECT
      u.id
    FROM (SELECT
        id
      FROM USER
      WHERE uid IN (SELECT
          uid
        FROM USER
        GROUP BY uid
        HAVING COUNT(uid) > 1)
      AND id NOT IN (SELECT
          MIN(id)
        FROM USER
        GROUP BY uid
        HAVING COUNT(uid) > 1)) AS u);

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL查询重复数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL查询重复数据

假设有一个用户表 user,数据如下:1、查询表中 uid 重复的数据SELECT id, uid, nameFROM USERWHERE uid IN (SELECT uid FROM USER GROUP BY uid HAVING CO
MySQL查询重复数据
2018-06-05

MySQL查询表中重复数据的实现

目录一、查询重复记录方法1方法2:使用别名as方法3,不推荐,执行速度较慢二、总结一、查询重复记录例:查询员工表里出现重复姓名的记录思路:1、查看重复记录,首先要使用分组函数(group by),再用聚合函数中的计数函数count(na
2023-08-25

MYSQL双表查询时出现数据重复

今天在做双表查询的时候出现了同一条数据出现2次的问题(重复数据)。前景提要:  A表和B表   A表中有A.sourseId。B表中也有B.sourseId。                          A表中有A.accountsetId。B表中也有B
MYSQL双表查询时出现数据重复
2015-12-26

MySQL中怎么查询不重复的数据

这篇文章主要介绍了MySQL中怎么查询不重复的数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL中怎么查询不重复的数据文章都会有所收获,下面我们一起来看看吧。一、查询不重
2023-04-28

Mysql查询某字段值重复的数据个数

select gongchengid,count(*) as count from erp_wangongbg group by gongchengid having count>1;
Mysql查询某字段值重复的数据个数
2019-11-21

mongodb怎么查询重复数据

要查询重复数据,你可以使用MongoDB的聚合框架和聚合管道操作符来实现。以下是一种可能的解决方案:1. 使用$group操作符按照要检查的字段进行分组。2. 使用$match操作符过滤出重复的分组。3. 使用$project操作符选择需要
2023-10-19

mysql怎么查询某个字段重复数据

要查询某个字段的重复数据,可以使用以下SQL语句:SELECT 字段名, COUNT(字段名) AS 重复次数FROM 表名GROUP BY 字段名HAVING COUNT(字段名) > 1;其中,将字段名替换为你要查询的字段名,表
mysql怎么查询某个字段重复数据
2024-04-09

MySQL 数据库查询数据,过滤重复数据保留一条数据-

转自: http://www.maomao365.com/?p=10564  摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_number函数,所以我们需变向实现此功能。 --1.基础数据
MySQL 数据库查询数据,过滤重复数据保留一条数据-
2021-10-02

mysql怎么查询某个字段重复的数据

要查询某个字段重复的数据,可以使用如下的SQL语句:SELECT field_name, COUNT(*) AS countFROM table_nameGROUP BY field_nameHAVING count > 1;其中,
mysql怎么查询某个字段重复的数据
2024-03-01

mysql查询去重复数据的方法是什么

在MySQL中,可以使用DISTINCT关键字来查询去重复数据。例如,假设有一个名为"employees"的表,包含以下数据:+----+-------+--------+| id | name | salary |+----+-
mysql查询去重复数据的方法是什么
2024-04-09

thinkphp如何查询重复数据库

这篇文章主要介绍了thinkphp如何查询重复数据库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇thinkphp如何查询重复数据库文章都会有所收获,下面我们一起来看看吧。thinkphp查询重复数据库的方法:
2023-07-04

怎么有效地查询MySQL表中的重复数据

在MySQL数据库中,偶尔会遇到需要查找表中出现的重复数据的情况。这种情况下,我们可以通过编写一些SQL查询语句轻松地找到并处理这些重复行。本文将介绍一些常见的方法和技巧,帮助你有效地查询MySQL表中的重复数据。 方法一:使用COUNT(
2023-08-21

mysql查询去除重复数据的方法是什么

在 MySQL 中去除重复数据可以通过使用 DISTINCT 关键字或者 GROUP BY 子句来实现。使用 DISTINCT 关键字:SELECT DISTINCT column1, column2, ...FROM table_na
mysql查询去除重复数据的方法是什么
2024-04-09

编程热搜

目录