Goeiemorgen,
Ik ben op zoek naar een querie die het volgende doet:
Alle records verwijderen met een datum die meer dat een week geleden zijn, maar bewaar van elke dag 1 record met de laatste tijd.
Ik hoop dat deze niet te moeilijk is. Ik kom er absoluut niet uit.
ik had het volgende geprobeerd:
DELETE FROM player_koersen
WHERE DATE_SUB(NOW(),INTERVAL 7 DAY) > datum
Ik vraag me af of dit in 1 query kan, je moet namelijk zorgen dat je de ID's krijgt van de maximale tijd op een dag, (de laatste tijd, maar dat is ook de hoogste tijd)
Je kan zoiets proberen, gaat puur om de constructie, moet je even aanpassen naar jou wensen:
DELETE
FROM
player_koersen
WHERE
DATE_SUB(NOW(),INTERVAL 7 DAY) > datum
AND
id NOT IN
(SELECT
id
FROM
player_koersen
WHERE
tijd=MAX(tijd)
GROUP BY
datum)
DIt is slechts ter illustratie, wat zou moeten kunnen, het idee is dat je in de subquery (na de NOT IN) van elke dag de laatste tijd selecteerd, en daar ALLEEN het id van ophaalt. er mogen dus niet meer kolommen voorkomen die je ook selecteerd.
Bedankt voor je reactie. Het werkt nu nog niet helemaal. Hoe zou dit kunnen? ik heb het volgende:
DELETE
FROM player_koersen
WHERE DATE_SUB(NOW(),INTERVAL 7 DAY) > datum
AND
id NOT IN
(SELECT
id
FROM
player_koersen
WHERE
datum=MAX(TIME(datum))
GROUP BY
datum)
ik krijg als foutmelding: Invalid use of group function