Autor Zpráva
lamatér
Profil *
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
poddotaz nelze použít, viz dále
lamatér
Profil *
Alphard
tohle bohužel nefunguje... vyhodí to chybu:
#1093 - You can't specify target table 'tabulka' for update in FROM clause
Tomasds
Profil
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 *
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
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
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 *
zajímavé řešení... ale funguje přesně jak potřebuju... moc díky
loki_17
Profil *
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 *
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0