Hallo,
mein Problem ist folgendes:
Ich habe eine große MySQL-Datenbank mit einer Tabelle mit ca 32.000 Einträgen. In dieser Tabelle gibt es unter anderen eine Spalte mit einer ID und einem Monat (Format: YYYY-MM). ID ist vom Typ her ein Integer, Monat bisher ein String (sollte aber vermutlich angepasst werden für die Abfrage, die ich vor habe).
So, nun habe ich festgestellt, dass es einige Einträge gibt, die in mehreren Monaten mit der gleichen ID auftreten (also die ID ist jeweils einzigartig pro Monat, aber es gibt Einträge mit der gleichen ID zu anderen Monaten). Diese will ich nun herausfiltern löschen, sodass bei den Einträgen, bei denen die ID in mehreren Monaten auftauchte, nur noch einer dieser Einträge übrig bleibt und wenn möglich der, der zuletzt (also spätester Monat) gemacht wurde.
Es gibt eine Reihe weitere Spalten, in denen die Einträge bei gleicher ID NICHT zwingend gleich sind, dies spielt aber für die Selektion keine Rolle.
Kleine Veranschaulichung:
ID, Monat
1 2006-01
2 2006-01
3 2006-01
1 2006-02
2 2006-02
1 2006-03
Nachher sollte dann noch übrig sein:
ID, Monat
1 2006-03
2 2006-02
3 2006-01
Ich hoffe, ihr könnt mir weiterhelfen, weil ich schon probiert habe, aber kein passendes MySQL-Kommando basteln konnte.
EDIT:
Code:
---------
SELECT id, DISTINCT(monat) FROM tabelle
---------
--> Hilft mir in diesem Fall leider nicht weiter, weil ich den gesamten Eintrag, also die gesamte Zeile haben möchte und nicht nur die ID.
mein Problem ist folgendes:
Ich habe eine große MySQL-Datenbank mit einer Tabelle mit ca 32.000 Einträgen. In dieser Tabelle gibt es unter anderen eine Spalte mit einer ID und einem Monat (Format: YYYY-MM). ID ist vom Typ her ein Integer, Monat bisher ein String (sollte aber vermutlich angepasst werden für die Abfrage, die ich vor habe).
So, nun habe ich festgestellt, dass es einige Einträge gibt, die in mehreren Monaten mit der gleichen ID auftreten (also die ID ist jeweils einzigartig pro Monat, aber es gibt Einträge mit der gleichen ID zu anderen Monaten). Diese will ich nun herausfiltern löschen, sodass bei den Einträgen, bei denen die ID in mehreren Monaten auftauchte, nur noch einer dieser Einträge übrig bleibt und wenn möglich der, der zuletzt (also spätester Monat) gemacht wurde.
Es gibt eine Reihe weitere Spalten, in denen die Einträge bei gleicher ID NICHT zwingend gleich sind, dies spielt aber für die Selektion keine Rolle.
Kleine Veranschaulichung:
ID, Monat
1 2006-01
2 2006-01
3 2006-01
1 2006-02
2 2006-02
1 2006-03
Nachher sollte dann noch übrig sein:
ID, Monat
1 2006-03
2 2006-02
3 2006-01
Ich hoffe, ihr könnt mir weiterhelfen, weil ich schon probiert habe, aber kein passendes MySQL-Kommando basteln konnte.
EDIT:
Code:
---------
SELECT id, DISTINCT(monat) FROM tabelle
---------
--> Hilft mir in diesem Fall leider nicht weiter, weil ich den gesamten Eintrag, also die gesamte Zeile haben möchte und nicht nur die ID.
Zuletzt bearbeitet: