SQL dotaz, zmazanie najstarších prvkov

Programovacie jazyky, rady, poradňa...
scriptType
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 110
Registrovaný: 22 feb 2011, 19:34

SQL dotaz, zmazanie najstarších prvkov

Príspevok od používateľa scriptType »

Zdravím páni programátori a dámy (maybe),

mám tabuľku s ktorej chcem odstrániť vždy najstarší zoznam, ak tabuľka prekročí 12 riadkov (čiže ak tam je 13 a viac). Chcel by som to vyriešiť jedným dopytom, ale narazil som na problém s podmienkou.
Posledný najstarší prvok z najmenším ID zmažem takto, avšak nedarí sa mi tam zakomponovať podmienku "ak je väčší počet riadkov ako 12"

Kód: Vybrať všetko

DELETE FROM tabulka
ORDER BY my_id
LIMIT 1 
potrebujem to prerobiť nejako takto

Kód: Vybrať všetko

DELETE FROM tabulka IF pocetriadkov > 12 tak zmaz MIN(ID)
už to budem len preháňať cyklom a kontrolovať aktuálny počet riadkov pokým nedostanem 12.
Ako na to?
Ďakujem, Adam
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: SQL dotaz, zmazanie najstarších prvkov

Príspevok od používateľa *****HERO***** »

skus to takto. tym zmazes vsetko naraz, nemusis nic prechadzat cyklom

Kód: Vybrať všetko

DELETE FROM tabulka
WHERE my_id NOT IN (SELECT * 
                  FROM   (SELECT my_id
                          FROM   tabulka
                          ORDER  BY my_id DESC
                          LIMIT  0, 12) AS x); 
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: SQL dotaz, zmazanie najstarších prvkov

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

delete from tabulka limit 12,18446744073709551615
scriptType
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 110
Registrovaný: 22 feb 2011, 19:34

Re: SQL dotaz, zmazanie najstarších prvkov

Príspevok od používateľa scriptType »

Vďaka za odpovede. Práve že potrebujem z toho dotazu dostať pole údajov o stĺpci kde je zálohovaný názov fotky ktoré musím z každým riadkom taktiež vymazať. Len neviem či sa z DELETE dá vydolovať údaj o tom stĺpci s toho akurát tak zistím počet zmazaných/ ovplyvnených riadkov. Skôr nejako využiť ten vnorený select. Hm, ako na to?

Mám to zatiaľ spravené dvoma dotazmi. Prvý naselectuje staršie riadky ako 12 a podľa názvu obrázku v stĺpci odstráni tie pravé čo treba a druhý dotaz odstráni stĺpce podľa audiovho príkladu. (btw to číslo "18446744073709551615" to len tak výmysel z hlavy alebo najväčší možný počet riadkov? :D) Dalo by sa to vyriešiť aj jedným dotazom?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: SQL dotaz, zmazanie najstarších prvkov

Príspevok od používateľa audiotrack »

Sice vobec netusim co chces robit, lebo splietas nejake mazanie stlpcov a nie riadkov a podobne, ale mam pocit ze tvoj problem by vyriesili cudzie kluce. Kazdopadne mas tu databazu asi zle navrhnutu. Neviem napriklad preco si do nej uchovavas nazvy nejakych zaloh, ked tie si si mohol generovat tak, ze ich nemusis ukladat /napriklad k nazvu povodnemu pridat nejaky prefix datumu/



...myslis ze by mi take cislo napadlo z hlavy?
Napísať odpoveď