[mysql] Table inkorten naar 100 records

Pagina: 1
Acties:

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
Hoe kan je simpel Table inkorten maar 100 records bijvoorbeeld? dus dat de oudste weggaan en niet de nieuwste :)
DELETE FROM TableName limit 100,9000 < werkt niet :(

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Het is misschien goed om een veldje insert_date toe te voegen. Dan kan je gewoon zeggen: delete from table where insert_date<26-2-2002 (ofzoiets).

Siditamentis astuentis pactum.


  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
Maar ik wil juist dat er altijd 100 inzitten dus niet dat hij te veel verwijdert :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:40

mulder

ik spuug op het trottoir

Moet dit in MySQL zelf?

oogjes open, snaveltjes dicht


  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
Als het kan wel :)

en anders is een php scriptje natuurlijk ook mogelijk met limit :)en dan 1 voor 1 verwijderen :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:40

mulder

ik spuug op het trottoir

Denk dat het MySQL niet gaat. Er moet idd een datetime veld aanwezig zijn denk ik, en de records moeten echt geteld worden.

oogjes open, snaveltjes dicht


  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
Waarom bouwen ze dat nou niet in mysql stuk makelijker nu moet ik er een scrippie voor schrijven :)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Heb je een datumveld?
zo ja dan hier de oplossing:

tel eerst aantal records:
code:
1
2
select count(*)
from   tabel

en dan verwijder:
code:
1
2
3
DELETE FROM tabel
ORDER BY datumveld
LIMIT aantal_records-100

Of
code:
1
2
3
4
5
DELETE FROM tabel
WHERE  100 < (select count(*)
          from   tabel t1
          where  t1.datum > tabel.datum
         )

Deze laatste kan wel een traag zijn

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op donderdag 28 februari 2002 23:27 schreef Martink het volgende:
Maar ik wil juist dat er altijd 100 inzitten dus niet dat hij te veel verwijdert :)
Als je altijd 100 wilt, zou ik het koppelen aan de insert van een nieuwe. dan ontstaat de 101ste en gooi je de oudste weg. Dan blijf je altijd op 100 staan.
Het leven kan soms simpel zijn

  • Grum
  • Registratie: Juni 2001
  • Niet online
MySQL doet alleen geen subselects .......

maaarjaaaa wat weet ik er nou van he :+

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
Op vrijdag 01 maart 2002 15:46 schreef Goodielover het volgende:
Heb je een datumveld?
zo ja dan hier de oplossing:

tel eerst aantal records:
code:
1
2
select count(*)
from   tabel

en dan verwijder:
code:
1
2
3
DELETE FROM tabel
ORDER BY datumveld
LIMIT aantal_records-100

Of
code:
1
2
3
4
5
DELETE FROM tabel
WHERE  100 < (select count(*)
          from   tabel t1
          where  t1.datum > tabel.datum
         )

Deze laatste kan wel een traag zijn
Ik heb het even geprobeert op een table met 10 records :(
code:
1
2
DELETE FROM TableName ORDER BY id LIMIT 10-5
Error: 1064 - You have an error in your SQL syntax near 'ORDER BY id LIMIT 10-5' at line 1

  • Grum
  • Registratie: Juni 2001
  • Niet online
jah erm DUHHH
die 10-5 moet je ook in je code doen dat er gewoon 5 staat ;)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je moet de query ook dynamisch opbouwen. dus niet de berekening in het statement zetten, maar daar tussen in PHP oid en dan het getal direct opnemen in de query
edit:
Ik moet sneller typen

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 20:14
Vage eis, altijd exact 100 records in een tabel...

Maar een koppeling van een INSERT met een DELETE lijkt me logischer...

Wat doe je trouwens als je wel een record wil DELETEn maar niet wil INSERTen ?? Dan heb je ineens 99 records ??

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Dank je wel GarBaGe:
Op vrijdag 01 maart 2002 15:48 schreef Goodielover het volgende:

[..]

Als je altijd 100 wilt, zou ik het koppelen aan de insert van een nieuwe. dan ontstaat de 101ste en gooi je de oudste weg. Dan blijf je altijd op 100 staan.
Het leven kan soms simpel zijn
Pagina: 1