Dubbele records verwijderen - Nieuwste behouden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk Kroon

Henk Kroon

05/08/2019 15:40:25
Quote Anchor link
Goedemiddag,

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 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

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
 
PHP hulp

PHP hulp

19/01/2020 06:27:20
 
Adoptive Solution

Adoptive Solution

05/08/2019 16:09:09
 
Thomas van den Heuvel

Thomas van den Heuvel

05/08/2019 16:56:23
Quote Anchor link
Is dit niet een structureel probleem? Al die records, dat zijn dan INSERTs? Vervolgens een DELETE-query uitvoeren op oudere records (periodieke opschoonactie?) is een oplossing voor een probleem wat je zelf hebt geïntroduceerd dan? Waarom geen constraint op mac en een UPDATE query indien deze al aanwezig is? Dan hoef je nooit iets te deleten. Tenzij de historie relevant is, maar dan snap ik niet dat je dingen weggooit.

Oftewel, kun je dit niet ergens anders op een andere manier oplossen zodat het DELETEn in het geheel niet nodig is?
 
Henk Kroon

Henk Kroon

05/08/2019 17:00:14
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

05/08/2019 19:17:14
Quote Anchor link
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?
 
Henk Kroon

Henk Kroon

06/08/2019 08:11:27
Quote Anchor link
Dit is de export die opgehaald is uit een van de andere applicaties. Aan die kant kan ik helaas niets veranderen.

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;


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.
Gewijzigd op 06/08/2019 08:12:03 door Henk Kroon
 
- Ariën -
Beheerder

- Ariën -

06/08/2019 08:54:35
Quote Anchor link
Heb je direct toegang tot MySQL met je eigen computer? En heb je anders SSH?

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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.