Autor Zpráva
AM_
Profil
Zdravím, potřeboval bych vědět, jak prohodit hodnoty dvou sloupců v MySQL databázi; mám tabulku převodů peněz se sloupci "z_uctu" a "na_ucet", a když se změní směr převodu, potřeboval bych hodnoty ve sloupcích prohodit.
Zkoušel jsem:
UPDATE.. SET z_uctu=na_ucet,na_ucet=z_uctu ...
- nejde, do obou polí se rozkopíruje hodnota z na_ucet
UPDATE.. SET @ucet=z_uctu,z_uctu=na_ucet,na_ucet=@ucet...
- použití proměnné mi hlásí syntax error, asi ji to v tomto kontextu nezkousne.

Může se měnit směr hodně převodů najednou, takže to potřebuji vyřešit nějak na úrovni databáze a věřím, že to půjde snadno, principielně to přeci není problém.

Děkuji za nápovědu.
o_O
Profil
Slouží na to @temp. :-)

Mělo by fungovat:
UPDATE... SET z_uctu=(@temp:=z_uctu), z_uctu = na_ucet, na_ucet = @temp;

Edit: Kajman je v tomto směru odborník, asi bych důvěřoval spíše jemu.
Kajman_
Profil *
update prevody vzor join prevody cil on vzor.id=cil.id
set cil.z_uctu=vzor.na_ucet, cil.na_ucet=vzor.z_uctu
where cil.id=42 -- ci jina podminka omezuji radky, u kterych se maji prehodit hodnoty
AM_
Profil
o_O: díky moc, snažil jsem se to řešit přes proměnnou, ale netušil jsem, že je potřeba takhle obskurní syntax.
Kajman: spojování tabulek kvůli tak banální operaci mi přišlo jako kanón na brabce, ale stejně dík za tip ;)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0