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

maar dit werkt dus niet!
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

Reageren