mar 26
MySQL: update pojedynczego znaku, wyrazu w kolumnie
Jeśli mamy tabelę TEST a w niej kolumnę OPIS i stwierdzimy że w całej tabeli, wszędzie w opisach, wewnątrz tekstu jest np.: „2″ zamiast „7″ to mozemy to szybko poprawić jednym zapytaniem.
Jeśli zrobimy tak:
update TEST t set OPIS = (select replace (OPIS, "2", "7") from TEST where id=t.id)
dostaniemy piękny komunikat o treści:
can't specify target table 'TEST' for update in FROM clause
Problemu unikniemy stosując małą sztuczkę:
update TEST t set OPIS =
(select replace (OPIS, "2", "7") from (
select * from TEST
) as x
where x.id = t.id);
zakładając że „id” to nasz klucz primary.

