Autor | Zpráva | ||
---|---|---|---|
PecanCZ Profil |
#1 · Zasláno: 6. 12. 2012, 19:24:07
Zdravím, řekněme, že mám v db 200 záznamů a já bych potřeboval vymazat 190 tak, aby těch 10 co zůstane bylo nejnovějších. Mohl by mi někdo poradit jak to nejjednodušeji provést?
Děkuji |
||
shaggy Profil |
#2 · Zasláno: 6. 12. 2012, 19:28:16
Ak chceš nechať najnovšie, tak logicky vieš ich dátum (prípadne id). A preto pri mazaní použiješ podmienku (WHERE) kde je dátum starší ako ten, od ktorého chceš nechať záznamy. Prípade zmažeš všetko, kde je id menšie, ako id najstaršieho záznamu, ktorý chceš nechať (za predpokladu, že id je auto increment).
|
||
PecanCZ Profil |
#3 · Zasláno: 6. 12. 2012, 19:31:42
ID mám, ale nemusí na sebe navazovat, protože do db se ukládají data od více uživatelé a já vybírám, respektive chci mazat jen od určitého uživatele...svým způsobem tedy ID záznamu od kterého chci mazat neznám
|
||
Tori Profil |
Dá se to řešit poddotazem, kterým vyberete ID řádků, které se mají smazat. tabulka je v obou případech ta, ze které chcete mazat. Liší se jen aliasem. V druhé polovině LIMIT může být jakékoli číslo spolehlivě vyšší, než počet řádků v tabulce. Omezení na konkrétního uživatele patří taky do poddotazu.
DELETE t1 FROM tabulka t1 INNER JOIN (SELECT id FROM tabulka ORDER BY datum DESC LIMIT 10, 123456789) ref USING (id) Jednoduchý DELETE s ORDER BY a LIMIT se dá taky použít, ale musel byste znát přesný počet řádků tabulky, protože u DELETE se dá v části LIMIT použít jen jediné číslo (kolik řádků smazat). |
||
PecanCZ Profil |
#5 · Zasláno: 6. 12. 2012, 19:51:29
to je ono, díky :)
|
||
shaggy Profil |
#6 · Zasláno: 7. 12. 2012, 13:17:15
PecanCZ:
„protože do db se ukládají data od více uživatelé a já vybírám, respektive chci mazat jen od určitého uživatele“ Len poznámka - do budúcnosti by bolo dobré túto informáciu napísať ;-) Potom by som nemusel hádať, čo asi chceš urobiť. Alebo si mal dôvod, prečo si nám neposkytol všetky informácie? Verím, že nie. |
||
Časová prodleva: 11 let
|
0