加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL查询重复数据

发布时间:2020-12-12 02:21:22 所属栏目:MySql教程 来源:网络整理
导读:? 假设有一个用户表 user,数据如下: 1、查询表中 uid 重复的数据 SELECT id,uid,name FROM USER WHERE uid IN ( uid USER GROUP BY uid HAVING COUNT (uid) 1 ); 2、查询表中重复数据,排除最小id user user 1 ) AND id NOT SELECT MIN (id) 1 ); 3、删除

?

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

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

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

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

user
user
  1)
AND id NOT SELECT
    MIN(id)
  1);

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

DELETE
  WHERE id 
      u.id
    FROM (
        id
      USER
      
          uid
        USER
         uid
        )
      SELECT
          (id)
        1)) AS u);

4、遇到的问题:

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

?


      id
    USER
    
        uid
       uid
      )
    SELECT
        (id)
      1));

?

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

?

AS u);

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读