2017-01-12 3 views
-3

У меня есть serial_no (первичный ключ), и я хочу заменить слово в serial_no. Например:Sql Update duplicate

Update table Set 
serial_no=REPLACE(serial_no,'56','000') 

Но получить ошибки продублировать для обновления

Я хочу, чтобы обновить все записи, за исключением того, что запись дублируется

+2

Какие СУБД вы используете? – jarlh

+0

Было бы полезно знать вашу модель данных. См. [Mcve]. –

ответ

0

Используйте NOT EXISTS, чтобы убедиться, что новый serial_no уже не существует.

Update table t1 
Set serial_no=REPLACE(serial_no,'56','000') 
where not exists (select 1 from table t2 
        where t2.serial_no = REPLACE(t1.serial_no,'56','000')) 
0

Если вы используете MySQL, вы можете использовать UPDATE IGNORE:

UPDATE IGNORE table 
SET serial_no = REPLACE(serial_no,'56','000') 
Смежные вопросы