2012-03-31 24 views
1

Betrachten Sie die folgende Tabelle "Tweets"Wie doppelte Einträge aus der Datenbank entfernen?

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 

Jeder tweet nur einmal in der Datenbank angezeigt werden sollen. Wie Sie sehen können, ist der gleiche Tweet (Call_id, ID_str, Timestamp und Text - bei anderen Worten ist alles gleich, mit Ausnahme der tweet_id (das ist ein automatisches Nummerierungsfeld)) wurde 4 mal (!)

abgespeichert (

) Gibt es eine Möglichkeit, Übereinstimmungen zu finden (also: alles außer tweet_id) und dann die letzten x - 1 (hier: 4 -1 = 3) von ihnen zu löschen? Mit anderen Worten, würde sich der aufgeräumte Tisch wie

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

Ich hoffe, es ist eine einfache Möglichkeit, dies zu tun, denn sonst habe ich ein großes Problem (zeigen Sie, was, bevor Sie denken in einer zusätzlichen Stunde tatsächlich setzen Erstellen Sie Ihre Datenbank kann!)

+0

Diese Frage eine Million Mal beantwortet worden sein. – usr

Antwort

3

Haben Sie eine Lösung online gesucht, bevor Sie diese Frage stellen ?? Wenn nicht, ist hier ein Online-Tutorial, wie man das macht.

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

+0

Danke dafür. (i) Ich habe die Tweets-Tabelle in tweets_new (ii) kopiert. In tweets_new habe ich die tweet_id-Spalte gelöscht. (iii) Ich habe eine Tabelle namens tweets_distinct mit der gleichen Struktur wie tweets_new (iv) erstellt. Nach dem Tutorial sollte ich das tun Trick: 'SELECT DISTINCT * IN tweets_distinct FROM tweets_new' - allerdings bekomme ich einen Fehler:' # 1327 - Nicht deklarierte Variable: tweets_distinct'. Ich verstehe nicht, da ich doppelt und dreifach überprüft habe, aber die tweets_distinct-Tabelle existiert wirklich (keine Rechtschreibfehler oder etwas). Deine Gedanken bitte :-) – Pr0no

+0

P.S. Ich könnte die Spalte tweet_id leicht löschen, da sie noch nirgends referenziert wurde. So kann ich zuerst eine aufgeräumte Tabelle erstellen und danach ein auto_increment-Feld für die Nummerierung der Tweets einfügen. – Pr0no

+1

ja, wenn es nicht referenziert wurde, können Sie es leicht löschen –

2

Einfachste wäre, die bereinigten Daten in einer neuen Tabelle zu kopieren, die alte fallen, legte die zurück in den alten gereinigt.

die eindeutigen Einträge zu bekommen, können Sie einfach tun:

select max(tweet_id) as tweet_id, call_id, id_str, timestamp, text from tbl group by call_id, id_str, timestamp, text 
Verwandte Themen