Autor Zpráva
Charlie
Profil
Zdravím,

potřeboval bych poradit s SQL dotazem. Mám tabulku backups a v ní zálohy stránek, přičemž jeden název zálohy se může opakovat i několikrát (stránka je zazálohovaná vícekrát). Maxímální počat identických záloh bych chtěl mít ale konečný, dejme tomu 10. Chtěl bych tedy po každém přidání aplikovat dotaz, který by zachoval 10 nejnovějších záznamů a zbylé smazal.

Veškeré mé pokusy byly zatím neúspěšné, budu rád za každý nápad.
Kajman_
Profil *
No, ladné řešení mě nenapdá... možno by to mohlo fungovat takle nějak

delete from b11 using
backups b1,
backups b2,
backups b3,
backups b4,
backups b5,
backups b6,
backups b7,
backups b8,
backups b9,
backups b10,
backups b11
where
b1.nazev_cl=b2.nazev_cl and
b1.nazev_cl=b3.nazev_cl and
b1.nazev_cl=b4.nazev_cl and
b1.nazev_cl=b5.nazev_cl and
b1.nazev_cl=b6.nazev_cl and
b1.nazev_cl=b7.nazev_cl and
b1.nazev_cl=b8.nazev_cl and
b1.nazev_cl=b9.nazev_cl and
b1.nazev_cl=b10.nazev_cl and
b1.nazev_cl=b11.nazev_cl and
b1.id>b2.id and
b2.id>b3.id and
b3.id>b4.id and
b4.id>b5.id and
b5.id>b6.id and
b6.id>b7.id and
b7.id>b8.id and
b8.id>b8.id and
b9.id>b10.id and
b10.id>b11.id

ale to bude asi nesmyslně moc zatěžovat db a už při menších objemech to možná ani nepůjde a narazí na limit počtu řádků při joinování :-)

Takže spíš bych zkusil popřemýšlet o jiném mazání... třeba, že se nechá poslední vždy a jinak se smažou rok staré záznamy.

Nebo holt zavolat delete pro každý článek zvlášť a použít limit 10, 10000000.
Charlie
Profil
Kajman_:
To je opravdu dost krkolomné :) Ale díky moc, potvrdil jsi mi, že nemá cenu řešit neřešitelné zadání.
Kajman_
Profil *
Řešitelné to je, jen mi přijde, že je efektivnější to promazat pro každou skupinu zvlášť než jedním divním dotazem.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0