mysql-MySQL 删除重复数据(两个字段)

问题描述

MySQL 删除重复数据(两个字段)

表full中userID和movieID两个字段确定一条唯一的数据。
现在表中有少量重复数据和大量非重复数据。
重复数据中,preference列和timestamp列不为空的这些,需要保留;preference列和timestamp列为空的这些需要删除,应该怎么办?
初学者,希望答案详细:) 感激不尽
+------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| userID | int(11) | NO | | 0 | |
| movieID | int(11) | NO | | 0 | |
| preference | int(11) | YES | | NULL | |
| timestamp | int(11) | YES | | NULL | |
+------------+---------+------+-----+---------+-------+

解决方案

先建一个表,用distinct查询不重复的数据放到新建的表里面,然后把原表数据清空,再把刚才新表的数据插到原表里
然后把数据导入到新表中:
INSERT INTO table2 SELECT distinct * FROM table1;
你试一下,看可以不?

解决方案二:

step 1: 复制table为table_copy
step 2: delete from table where UserID is NULL and MovieID is NULL and (UserID,MovieID) in (select t1.UserID,t1.MovieID from table_copy as t1,table_copy as t2 where t1.UserID = t2.UserID and t1.MovieID = t2.MovieID and not (t1.preference = t2.preference and t1.timestamp = t2.timestamp));

时间: 2024-11-08 19:51:12

mysql-MySQL 删除重复数据(两个字段)的相关文章

mysql查找删除重复数据并只保留一条实例详解

有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 50 1240 Abraham Lincoln High School 70 35 1241 Acalanes High School 120 89 1242 Academy Of The Canyons 30 30 1243 Agoura High School 89 40 1244 Agour

MySQL中删除重复数据的简单方法_Mysql

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考. 第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表 create table tmp3 as select min(id) as col1 from data_content

Mysql中如何查找并删除重复数据

考试系统中做了一个用户导入试题功能,导致用户导入了很多重复的试题,我需要查询及删除一下重复的记录,于是有了这篇文章. (一)单个字段 1.查找表中多余的重复记录,根据(question_title)字段来判断  代码如下 复制代码 select * from questions where question_title in (select question_title from people group by question_title having count(question_title

mysql数据库去除重复数据

问题描述 mysql数据库去除重复数据 现在存在一个比赛信息 数据表(matchInfo),里面的字段有 id,MatchName,MatchTime,master,guest,现在是因为写入数据库的时候会出现重复数据,请问一下应该怎么过滤?sql语句怎么写? 解决方案 select distinct matchtime,matchname,master,guest from matchinfo 解决方案二: 通过分组查询可以简单的实现 select * from matchInfo group

select-关于mysql中查询重复数据的疑问

问题描述 关于mysql中查询重复数据的疑问 我有一个表叫做sc. 现在要查询score中有相同分数的信息, 查询的sql语句是 select * from sc where score in (select score from sc group by score having count(score)>1); 我很好奇的是group by的执行顺序是比 having先执行啊, 按道理,执行了之后重复的score值是没有的,怎么还能再用having 来查出count(score)>1 的重复

sql 删除重复数据

sql 删除重复数据 本文章提供一款mysql删除重复数据,就是数据表中存在二条以上的重复数据,删除编号最小的一条信息. delete `borough_name` as a from fke_borough as a, ( select *,min(id) from fke_borough group by `borough_name` having count(1) > 1 ) as b  where a.`borough_name` = b.`borough_name` and a.id

SQL去除重复删除重复数据(千万级数据量)

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考. 第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表  代码如下 复制代码 create table tmp3 as select min(id) as col1 from d

SQL删除重复数据方法

原文:SQL删除重复数据方法 例如: id           name         value 1               a                 pp 2               a                 pp 3               b                 iii 4               b                 pp 5               b                 pp 6            

select-Mysql删除重复数据只保留一条

问题描述 Mysql删除重复数据只保留一条 Mysql删除重复数据只保留一条,我的sql这样的 DELETE from t_patient WHERE pa_iid IN (select pa_iid from t_patient group by pa_vname having count(pa_vname)>1) 但是报错了: [Err] 1093 - You can't specify target table 't_patient' for update in FROM clause 求