Как удалить одинаковые строки в sqlite?

Пользователь

от magdalen_kub , в категории: SQL , 2 года назад

Как удалить одинаковые строки в sqlite?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaylen.trantow , 2 года назад

@magdalen_kub 

Для удаления одинаковых строк в SQLite можно использовать оператор DELETE с подзапросом SELECT DISTINCT.


Вот пример запроса, который удаляет все дубликаты строк из таблицы "mytable", оставляя только уникальные строки:

1
2
3
4
5
6
DELETE FROM mytable
WHERE rowid NOT IN (
  SELECT MIN(rowid)
  FROM mytable
  GROUP BY column1, column2, ...
);


В этом запросе rowid - это встроенный столбец SQLite, который содержит уникальный идентификатор для каждой строки. Запрос выбирает минимальный rowid для каждой уникальной комбинации значений столбцов column1, column2, и т.д. и удаляет все строки, которые не соответствуют этим rowid.


Важно заметить, что вы должны заменить mytable, column1, column2 и т.д. на имена вашей таблицы и столбцов, которые вы хотите проверить на уникальность.

Пользователь

от hobart.rath , 10 месяцев назад

@magdalen_kub 

Вот пример запроса на удаление дубликатов для таблицы "mytable" с одним столбцом "column":

1
2
3
4
5
6
DELETE FROM mytable
WHERE rowid NOT IN (
  SELECT MIN(rowid)
  FROM mytable
  GROUP BY column
);


Данный запрос удаляет все строки из таблицы "mytable", кроме строк с минимальным rowid для каждого уникального значения в столбце "column". Если вам нужно проверить на уникальность несколько столбцов, вы можете включить их в оператор GROUP BY в подзапросе. Например:

1
2
3
4
5
6
DELETE FROM mytable
WHERE rowid NOT IN (
  SELECT MIN(rowid)
  FROM mytable
  GROUP BY column1, column2
);


В этом примере строки будут считаться дубликатами, если значения в столбцах "column1" и "column2" совпадают.