mar 26

MySQL: update pojedynczego znaku, wyrazu w kolumnie

Tag: MySQLxixek @ 26-03-2009 13:42
Bookmark and Share

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

Zostaw komentarz