Dubbele records verwijderen - Nieuwste behouden
Ik ben al enige tijd op zoek de query om mijn tabel op te schonen. Het lastige is alleen dat ik graag de record met de nieuwste datum wil houden (wat wat anders is dan de datum van vandaag :-) ).
Tabel:
mac dateveld
1 2019-06-24 21:46:20
1 2019-06-24 19:46:20
1 2019-06-24 15:46:20
2 2019-07-17 02:58:47
2 2019-07-17 04:28:17
2 2019-07-21 09:28:47
De bedoeling is dat onderstaande overblijft
mac dateveld
1 2019-06-24 21:46:20
1 2019-06-24 15:46:20
2 2019-07-17 02:58:47
2 2019-07-17 04:28:17
2 2019-07-21 09:28:47
Is er iemand die mij in de goede richting kan sturen? Bij voorbaat onwijs bedankt!
Toevoeging op 05/08/2019 15:41:16:
Overigens krijg ik bij Max(DateVeld) de juiste waardes boven. Alleen het lukt mij niet om dit om te zetten van een SELECT query naar een DELETE query
Oftewel, kun je dit niet ergens anders op een andere manier oplossen zodat het DELETEn in het geheel niet nodig is?
Dat zou zeker logisch zijn, alleen de informatie wordt in bulk aangeleverd incl historie en deze database is voor een webapp die meerdere bronnen combineert.
Okay. Maar nog een ander puntje, de manier waarop je je database in elkaar steekt wordt in grote mate bepaald door hoe je deze gebruikt. Dat gezegd hebbende, hoe zorgt de huidige opzet voor problemen? Wordt de database/tabel te groot (en hebben we het dan over honderden of miljoenen records?) of worden queries te traag? Mogelijk is dat laatste dan slechts een kwestie van een index toevoegen. Oftewel, wat gaat er nu mis/is onwenselijk in de huidige opzet/het huidige gebruik dat een aanpassing noodzakelijk is?
De laatste gegevens - max(DateVeld) - van deze tabel gebruik ik dan weer om de andere tabel bij te werken.
Het betreffen ongeveer 600.000 records.
Tot nu toe ben ik tot dit gekomen:
Quote:
DELETE t1 FROM [tabelnaam] t1
INNER JOIN
[tabelnaam] t2
WHERE
t1.DateVeld < t2.DateVeld AND t1.mac = t2.mac;
INNER JOIN
[tabelnaam] t2
WHERE
t1.DateVeld < t2.DateVeld AND t1.mac = t2.mac;
Dan komt er na enige tijd de foutmelding:
Quote:
Fout tijdens het uitvoeren van de opdracht
Foutcode: 500
Foutomschrijving: Internal Server Error (rejected)
De connectie met de server is verbroken.
Foutcode: 500
Foutomschrijving: Internal Server Error (rejected)
De connectie met de server is verbroken.
Gewijzigd op 06/08/2019 08:12:03 door Henk Kroon
Ik vermoed dat je het nu via PHPmyAdmin probeert die een time-out geeft.
Gewijzigd op 06/08/2019 09:15:11 door - Ariën -