Autor | Zpráva | ||
---|---|---|---|
lamatér Profil * |
#1 · Zasláno: 27. 9. 2008, 15:32:19
Ahoj
když mám tabulku, která má nějaké spoupce a v jednom podstatném sloupci 'pocet' je určité unikátní číslo potřeboval bych updatovat právě 1 řádek a to ten co má největší číslo v pocet nemůžu to sestrojit v rámci jednoho update dotazu... nevíte prosím někdo jak na to? Samozřejmě můžu mít 2 dotazy a napřed udělat select a to jednu hodnotu si uložit a v dalším update dotazu ji použít ale byl bych rád pokud by tohle šlo jen tím update dotazem |
||
Alphard Profil |
#2 · Zasláno: 27. 9. 2008, 15:49:23 · Upravil/a: Alphard
poddotaz nelze použít, viz dále
|
||
lamatér Profil * |
#3 · Zasláno: 27. 9. 2008, 17:18:16
Alphard
tohle bohužel nefunguje... vyhodí to chybu: #1093 - You can't specify target table 'tabulka' for update in FROM clause |
||
Tomasds Profil |
#4 · Zasláno: 27. 9. 2008, 18:02:44
lamatér
Je docela dobře možné, že tvoje tabulka se nejmenuje tabulka, tvůj sloupec se nejmenuje sloupec a hodnota, kterou chceš nastavit, není abc. |
||
lamatér Profil * |
#5 · Zasláno: 27. 9. 2008, 20:11:52
To samozřejmě... všechno jsem předělal a nic.
dokonce z čirého zoufalství jsem vytvářel novou jednoduchou tabulku tabulka se sloupci id, sloupec a pocet a několika málo záznamy což vedlo jen k té stejné chybě jako předtím |
||
Alphard Profil |
#6 · Zasláno: 27. 9. 2008, 20:33:12
omlouvám se, čtu nepozorně manuály, ale chybami se člověk učí, výše uvedé nemůže fungovat
Currently, you cannot update a table and select from the same table in a subquery. (manuál) jestli je problém s překlad, tak zjednodušeně: nelze použít update a poddotaz ze selectem na stejnou tabulku |
||
Alphard Profil |
#7 · Zasláno: 27. 9. 2008, 20:44:11 · Upravil/a: Alphard
takže, tohle už snad půjde
na druhou stranu, ta hromada chyb mě přivedla k jednoduchému řešení :-) update tabulka set sloupec = 'abc' order by pocet desc limit 1 |
||
lamatér Profil * |
#8 · Zasláno: 28. 9. 2008, 13:57:36
zajímavé řešení... ale funguje přesně jak potřebuju... moc díky
|
||
loki_17 Profil * |
#9 · Zasláno: 29. 9. 2008, 20:08:51
Přesně na něco podobného jsem se chtěl zeptat, tohle je užitečná věc, když se pracuje třeba s časem v php formátu time().
Nicméně ještě by mě moc zajímalo jestli se dá nějak zjistit id updatovaného řádku - nějaká variace na funkci mysql_insert_id() neslyšeli jste někdo o podobné funkci pro update? předem díky |
||
Kajman_ Profil * |
#10 · Zasláno: 29. 9. 2008, 20:24:51
loki_17
Udělejte si prvně select, co zjistí id, které chcete updatovat a to updatujte. Když updatujete třeba milion sloupečků, tak jak by se měly primární klíče vracet? |
||
loki_17 Profil * |
#11 · Zasláno: 29. 9. 2008, 20:50:51
Takže nic jako mysql_update_id() asi není co?
Taková funkce by měla vracet pole id-ček ale teoretizovat o funkci neexistující funkce asi nemá smysl co ? :-) Dobrá tedy... pojedu to přes 2 dotazy. Díky |
||
Časová prodleva: 16 let
|
0