Как удалить дубликаты записей из базы данных? - PullRequest
1 голос
/ 01 апреля 2012

Рассмотрим следующую таблицу «твиты»

tweet_id  call_id   id_str  timestamp  text
--------------------------------------------------
1         11        12345   312323134  lorem ipsum
2         11        12345   312323134  lorem ipsum
3         11        12345   312323134  lorem ipsum
4         11        12345   312323134  lorem ipsum
5         11        67890   325565454  dolor
6         11        34355   333544664  samet

Каждый твит должен появляться в базе данных только один раз.Как видите, один и тот же твит (тот же call_id, id_str, timestamp и text - в других словах все то же самое, за исключением tweet_id (который является полем нумерации)), был сохранен 4 раза (!)

Есть ли способ точного совпадения (так: все то же самое, кроме tweet_id), а затем удалить последние x - 1 (здесь: 4 -1 = 3) из них?Другими словами, очищенная таблица выглядела бы как

tweet_id  call_id   id_str  timestamp  text
--------------------------------------------------
1         11        12345   312323134  lorem ipsum
5         11        67890   325565454  dolor
6         11        34355   333544664  samet

. Я надеюсь, что есть простой способ сделать это, потому что в противном случае у меня огромная проблема (показывает, на что нужно потратить дополнительный час на обдумывание, прежде чемвы на самом деле можете построить свою базу данных!)

Ответы [ 2 ]

4 голосов
/ 01 апреля 2012

Вы искали решение онлайн, прежде чем задать этот вопрос ???? если нет, то есть онлайн-учебник о том, как это сделать.

http://www.sqlteam.com/article/deleting-duplicate-records

2 голосов
/ 01 апреля 2012

Проще всего было бы скопировать очищенные данные в новую таблицу, отбросить старую, поместить очищенную обратно в старую.

, чтобы получить уникальные записи, вы можете легко сделать:

select max(tweet_id) as tweet_id,  call_id,   id_str,  timestamp,  text from tbl group by  call_id,   id_str,  timestamp,  text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...