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.

źródło