删除SQL重复项

时间:2019-03-05 10:31:12

标签: mysql sql database duplicates

我对SQL完全陌生。我从未使用过它,只需要一个简单的答案,因为我现在没有时间学习SQL :(。我需要从本地数据库中删除重复的记录。案例看起来像这样:

| id | type  | ... |
-------------------
| 1  | test  | ... |
| 1  | test2 | ... |
| 1  | test  | ... |
| 1  | test  | ... |
我想删除所有重复的记录,它们具有相同的idtype但只保留在记录上。像这样:

| id | type  | ... |
-------------------
| 1  | test  | ... |
| 1  | test2 | ... |

无法使用按ID删除。我有5万条记录,我想删除所有重复的记录。当ID和类型相同时。

5 个答案:

答案 0 :(得分:1)

请尝试这个

第一条路

 SELECT id, type
        FROM table_name
  Group by id, type

第二种方式

 SELECT DISTINCT id, type
        FROM table_name;

答案 1 :(得分:0)

SELECT DISTINCT语句仅用于返回不同的(不同的)值。

在表内,一列通常包含许多重复值;有时您只想列出不同的(不同的)值。

SELECT DISTINCT column1, column2, ...
FROM table_name;

在您的表中

 SELECT DISTINCT id, type, ...
    FROM table_name;

答案 2 :(得分:0)

选择伴侣时,您只需要使用关键字distinct即可。尝试这样

 SELECT DISTINCT id, type, blah blah blah FROM your_table; // this should take care of em

答案 3 :(得分:0)

可能会有所帮助的TSQL示例代码:

 WITH tbl_alias AS
    (
       SELECT id, type,
           RN = ROW_NUMBER()OVER(PARTITION BY id, type ORDER BY id)
       FROM tbl
    )
    DELETE FROM tbl_alias WHERE RN > 1

您也可以尝试How to delete duplicates on a MySQL table?

答案 4 :(得分:0)

您应该用ID和类型替换表分组,并在其他字段上使用聚合函数。

您应该在问题中添加表的定义,并指定用于获取其他字段的规则。无论如何,这是一个简单的解决方案:

-- Create a temp copy of original table with distinct values
CREATE TEMPORARY TABLE copy_table1 
   SELECT id, type, MIN(field3) AS field3, ...
   FROM table1
   GROUP BY id, type;

-- Empty original table
DELETE FROM table1;

-- Insert distinct data into original table
INSERT INTO table1 (id, type, field3, ...) 
    SELECT id, type, field3, ...
    FROM copy_table1;