null_Ahnung
Grünschnabel
Hallo,
bitte bei folgendem Problem helfen, danke!
Folgende Tabelle:
Name EndeZeit EndeDatum
ACC00 01:00 2013-06-04
ACC00 02:00 2013-06-04
ACC00 03:00 2013-06-04
ACC00 04:00 2013-06-04
ACC01 23:00 2013-06-02
ACC01 23:45 2013-06-03
ACC01 05:30 2013-06-04
Wie kann ich aus dieser Tabelle, als Beispiel, pro ‘Name‘ nur die jeweils zwei jüngsten Einträge ausgeben, bzw. die anderen alten Einträge löschen?
Ausgabe:
Name EndeZeit EndeDatum
ACC00 03:00 2013-06-04
ACC00 04:00 2013-06-04
ACC01 23:45 2013-06-03
ACC01 05:30 2013-06-04
Ich wollte erst alles durchnummerieren und dann alles was >= 3 ist löschen. Ich weiß aber nicht wie bei neuem Namen von vorne durchnummeriert werden soll! (Gerne auch eine andere Vogehensweise!)
SELECT @rownum := @rownum +1 `rank` , `y` . *
FROM (
SELECT @rownum :=0
) AS `z` , logbestand AS `y`
ORDER BY `Name` ASC , CONCAT( EndeDatum, ' ', EndeZeit ) DESC
Ausgabe nach SQL-Abfrage:
rank Name EndeZeit EndeDatum
1 ACC00 04:00 2013-06-04
2 ACC00 03:00 2013-06-04
3 ACC00 02:00 2013-06-04
4 ACC00 01:00 2013-06-04
5 ACC01 05:30 2013-06-04 -->> ab hier sollte rank wieder bei 1 beginnen
6 ACC01 23:45 2013-06-03
7 ACC01 23:00 2013-06-02
bitte bei folgendem Problem helfen, danke!
Folgende Tabelle:
Name EndeZeit EndeDatum
ACC00 01:00 2013-06-04
ACC00 02:00 2013-06-04
ACC00 03:00 2013-06-04
ACC00 04:00 2013-06-04
ACC01 23:00 2013-06-02
ACC01 23:45 2013-06-03
ACC01 05:30 2013-06-04
Wie kann ich aus dieser Tabelle, als Beispiel, pro ‘Name‘ nur die jeweils zwei jüngsten Einträge ausgeben, bzw. die anderen alten Einträge löschen?
Ausgabe:
Name EndeZeit EndeDatum
ACC00 03:00 2013-06-04
ACC00 04:00 2013-06-04
ACC01 23:45 2013-06-03
ACC01 05:30 2013-06-04
Ich wollte erst alles durchnummerieren und dann alles was >= 3 ist löschen. Ich weiß aber nicht wie bei neuem Namen von vorne durchnummeriert werden soll! (Gerne auch eine andere Vogehensweise!)
SELECT @rownum := @rownum +1 `rank` , `y` . *
FROM (
SELECT @rownum :=0
) AS `z` , logbestand AS `y`
ORDER BY `Name` ASC , CONCAT( EndeDatum, ' ', EndeZeit ) DESC
Ausgabe nach SQL-Abfrage:
rank Name EndeZeit EndeDatum
1 ACC00 04:00 2013-06-04
2 ACC00 03:00 2013-06-04
3 ACC00 02:00 2013-06-04
4 ACC00 01:00 2013-06-04
5 ACC01 05:30 2013-06-04 -->> ab hier sollte rank wieder bei 1 beginnen
6 ACC01 23:45 2013-06-03
7 ACC01 23:00 2013-06-02