Portál AbcLinuxu, 10. května 2025 14:19

Dotaz: Smazani posledniho radku Mysql

26.4.2010 23:56 jarda
Smazani posledniho radku Mysql
Přečteno: 782×
Odpovědět | Admin
Dobry den,

Muj dotaz je asi jednoduchy, nicmene nikde jsem nic podobneho nenasel. Jak mam smazat posledni radek v databazi? Mam 5 sloupcu do kterych zapisuji data, obcas se ale spletu a tak bych potreboval posledni radek jednoduse smazat. Vsechny radky mam v prohlizeci zobrazene, cili bych si idealne predstavoval abych mel vedle kazdeho radku tlacitko smazat radek, popr jedno tlacitko smazat posledni radek. Doufam ze sem se vyjadril dostatecne presne,

Dekuji,

Honza

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Dalibor Smolík avatar 27.4.2010 01:07 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
V PHP existuje skript, který "obhospodaří" všechny úkony spojené s daty v tabulce (přidávání, úprava, výmaz). Vzor skriptu přikládám, nutné jej upravit podle skutečných podmínek.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
27.4.2010 08:50 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ten skript nehore je nejakej ujetej... Jakejsi kus neceho odnekud...

Predpokladam, ze mas tu tabulku s nejakym indexem typu autoincrement, je to vetsinou diost uzitecna vec. Ale slo by to i podle toho data...

delete from tabulka where id=MAX(select id from tabulka order by id);

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
27.4.2010 11:14 Honza
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
To je mi jasne, delete where neco=neco, jenze ja bych potreboval delete where neco=posledni. A nevim jak toho docilit. Navic si myslim ze to mam jednoduche pac jednim z 5ti sloupcu v tabulce je datum.
27.4.2010 11:21 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Tak pouzijes
delete from tabulka where datum=MAX(select datum from tabulka order by datum);
Staci si precist popis funkce MAX, ale sobne bych preferoval to porovnavani pres ID co navrhoval Zdenek, pripadne pouzit jako podminku mySQL funkci LAST_INSERT_ID()
27.4.2010 11:32 Honza
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
<*form action="" method="post"><*input type="submit" value="smazat posledni" name="del"> <*/form> <*? if (empty($_POST["del"])){ echo "nic se nemaze"; } else { echo "smazano posledni"; mysql_query ("DELETE FROM sg WHERE DATE=MAX"); } ?*>

Zkousim tohle, ale nejak mi to nejde :-/
27.4.2010 11:46 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
1. zkus pouzivat misto < zapis pomoci entit &lt; ;)

2. MAX je funkce, takze potrebuje parametr(y), ze kterych ma vybrat maximalni hodnotu, viz MySQL - MAX(). Takze mysql_query ("DELETE FROM sg WHERE date=MAX(SELECT date FROM sg ORDER BY date)");

Mala poznamka na okraj, nezkousej to na ostre databazi, pokud by se ta podminka vyhodnotila jako true, tak mas zadelano na problem
27.4.2010 12:05 Honza
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
mysql_query ("DELETE FROM sg WHERE Date=MAX (SELECT Date FROM sg ORDER BY Date)");

Porad nic, tak ja nevim, chyba bude asi ve me neco mam blbe, nechci zbytecne otravovat, ale kdybyste meli jeste nejake napady tak prosim sem s nima
Řešení 1× (Zdeněk Štěpánek)
Heron avatar 27.4.2010 11:26 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql

Nevím jestli je to podle normy, ale MySQL 5.0 mi tohle sežrala:

DELETE FROM `test` ORDER BY `id` DESC LIMIT 1;

Jestli to není košér, tak určitě půjde v transakci s dostatečnou izolací nejprve vybrat potřebný záznam a pak jej smazat. Pseudokód:

BEGIN;
SELECT ...
DELETE FROM ...
COMMIT;
27.4.2010 12:14 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Jo jasne, tohle je asi nejlepsi a nejspravnejsi reseni. Osobne totiz LIMIT nejak nepouzivam...

Jinak k tomu razeni. Podle datumu je to IMHO spatne, protoze jsi zatim nikde nerekl, ze to datum je now() v okamziku insertu. Pokud by bylo, tak to podle toho jdem radit, ale jakmile to bude datum cehokoliv jineho, rozhodne podle toho nejades posledni vlozeny radek.

Pokud jeste muzes hybat s tabulkama, dopln si tam ten sloupec autoincrement ID.
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
27.4.2010 12:17 Honza
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Zkusim tedy doplnit ten sloupec s tim autoincrementem a pak dam vedet, zustante prosim na prijmu :)
27.4.2010 12:20 Honza
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Velike diky vsem prispivajicim nakonec DELETE FROM `test` ORDER BY `id` DESC LIMIT 1; tohleto pomohlo.
27.4.2010 11:55 Honza
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
At to vazeni pratele zkousim jak to zkousim smazani posleniho radku pomoci data mi nefunguje. mysql_query ("DELETE FROM `sg` WHERE Date=MAX");

Toto mi nejde. Kdyz ale Date=MAX zamenim za Pocet(jinej sloupec)>10; tak to jde,... Pocet = MAX ale taky nefunguje..,,. nejake napady proc?
Tarmaq avatar 27.4.2010 12:38 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Smazani posledniho radku Mysql
MAX je funkce ktere musis predat parametr nazev sloupce
Don't panic!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.