Удалить дубликаты SQL - PullRequest
       23

Удалить дубликаты SQL

0 голосов
/ 05 марта 2019

Я совершенно новый в SQL.Я никогда не использовал его, и мне нужен простой ответ, потому что у меня сейчас нет времени изучать SQL :(. Мне нужно удалить дублированные записи из моей локальной БД. Случай выглядит так:

| id | type  | ... |
-------------------
| 1  | test  | ... |
| 1  | test2 | ... |
| 1  | test  | ... |
| 1  | test  | ... |
Я хочу удалить все дублированные записи, которые имеют одинаковые id и type, но оставить только в записи.Как это:

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

Использование удаления по идентификатору невозможно.У меня 50k записей, и я хочу удалить все дублированные записи.Когда ID и Тип совпадают.

Ответы [ 5 ]

1 голос
/ 05 марта 2019

Пожалуйста, попробуйте это

Первый путь

 SELECT id, type
        FROM table_name
  Group by id, type

Второй путь

 SELECT DISTINCT id, type
        FROM table_name;
0 голосов
/ 05 марта 2019

Вам следует заменить группировку таблиц по идентификатору и типу, а также использовать статистическую функцию в других полях.

Вы должны добавить в свой вопрос определение вашей таблицы и указать правило, которое будет использоваться для получения других полей.В любом случае, это простое решение:

-- 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;
0 голосов
/ 05 марта 2019

вам просто нужно использовать отличное ключевое слово при выборе mate .. попробуйте вот так

 SELECT DISTINCT id, type, blah blah blah FROM your_table; // this should take care of em
0 голосов
/ 05 марта 2019

Пример кода 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

Также вы можете попробовать Как удалить дубликаты в таблице MySQL?.

0 голосов
/ 05 марта 2019

SELECT DISTINCT оператор используется для возврата только различных (разных) значений.

Внутри таблицы столбец часто содержит много повторяющихся значений;и иногда вам нужно только перечислить различные (различные) значения.

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

В вашей таблице

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