Autor | Zpráva | ||
---|---|---|---|
beta Profil * |
#1 · Zasláno: 15. 2. 2007, 18:47:13
Mohl by mi někdo poradit jak vymazat všechny záznamy z tabulky kromě posledního? děkuju
|
||
tiso Profil |
#2 · Zasláno: 15. 2. 2007, 18:58:16
Najrýchlejšie tak že si vyberieš ten posledný záznam cez SELECT, potom DROP-neš tabuľku a vložíš ten záznam do prázdnej tabuľky...
|
||
HonzaH2 Profil |
#3 · Zasláno: 15. 2. 2007, 19:14:51
vpodstatě jak říká tiso jen místo DROP použij DELETE FROM nazevtabulky protože nepotřebuješ smazat tabulku, ale jen vyprázdnit. Poslední záznam zjistíš prostřednictví funkce mysql_insert_id
|
||
Alphard Profil |
#4 · Zasláno: 15. 2. 2007, 19:18:51
jen dodám, že rychlejší než delete from je truncate table tvoje_tabulka
|
||
HonzaH2 Profil |
#5 · Zasláno: 15. 2. 2007, 19:25:09 · Upravil/a: HonzaH2
pravda TRUNCATE TABLE je mnohem rychlejší než DELETE FROM protože smaže celou tabulku a zase jí založí, nemusí tedy mazat řádky po jednom. U hodně velkých tabulek je toto zrychlení opravdu velký. Tento příkaz ale nevrací počet odstraněných řádků ... což je ale asi jedno :o)
|
||
beta Profil * |
#6 · Zasláno: 15. 2. 2007, 19:40:27
jenže dropnout celou tabulku nemůžu protože chci smazat jen data jednoho uživatele a ne všech:-)
|
||
tiso Profil |
#7 · Zasláno: 15. 2. 2007, 19:52:20
Alphard pravda, myslel som truncate, omylom som napísal drop...
|
||
HonzaH2 Profil |
#8 · Zasláno: 15. 2. 2007, 20:20:30
jenže dropnout celou tabulku nemůžu protože chci smazat jen data jednoho uživatele a ne všech:-)
vždyť jsi nejprve psal, že potřebuješ smazat všechny záznamy kromě posledního. Teď píšeš, že potřebuješ smazat jen jeden záznam a ne všechny .... tak si to ujasni :o) Pokud chceš smazat všechno kromě jednoho záznamu, tak použij TRUNCATE - to sice smaže celou tabulku, ale zase jí založí, což je rychlejší než mazat záznam po záznamu. Takže když si ten jeden záznam, kterej potřebuješ, nejprv načteš, tak ho potom zas do té tabulky vložíš. Pokud chceš smazat jen jeden záznam, tak použij DELETE FROM nazevtabulky WHERE podmínka |
||
beta Profil * |
#9 · Zasláno: 15. 2. 2007, 20:57:09
omlouvám se, špatně jsem se vyjádřil...chci smazat všechny záznamy vložené uživateli ale zanechat vždy poslední...ne smazat celou tabulku...:-)
$lastid = mysql_insert_id(); myslel jsem že to udělám ("DELETE * FROM tabulka WHERE id = <$lastid and login = '$_SESSION[login]'") bohužel funkce mysql_insert_id() získá číslo jen v případě insert do tabulky ... |
||
HonzaH2 Profil |
#10 · Zasláno: 15. 2. 2007, 21:08:29
tak vlož prázdnej záznam a pak použij mysql_inserd_id a získáš ID, pak odečti jedničku a máš číslo svého posledního záznamu :o)) to ale asi neni úplně čisté řešení :o)
nebo projdi v cyklu všechny záznamy a do proměnné si ukládej vždy nejvyšší ID, na konci cyklu budeš mít v proměnné ID posledního záznamu |
||
HonzaH2 Profil |
#11 · Zasláno: 15. 2. 2007, 21:20:24
nebo tímto přímo vyfiltruješ poslední záznam:
SELECT * FROM tabulka ORDER BY id DESC LIMIT 1 |
||
beta Profil * |
#12 · Zasláno: 15. 2. 2007, 21:25:13
napadlo mě spíš tohle
$select = mysql_query("SELECT * FROM taqbulka WHERE login = '$_SESSION[login]' order by desc limit 1"); $count = mysql_fetch_assoc($select); $lastid = $count[id]; $detete = ("DELETE * FROM tabulka WHERE id < $lastid and login = '$_SESSION[login]'"); bohužel něco tam je blbě...pokud to celkově není hloupost...šlo by to a pokud ano kde mám chybu? |
||
beta Profil * |
#13 · Zasláno: 15. 2. 2007, 21:25:51
tak si mě předběhl :-)
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0