Как обновить MySQL запрос с несколькими где и установить с помощью или предложения - PullRequest
0 голосов
/ 20 февраля 2020
Update table 
set col = replace(col, 'value1','') where col like '%value1%'
or set col = replace(col, 'value2','') where col like '%value2%' 
or set col = replace(col, 'value3','') where col like'%value3%';

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать выражение case:

update table set col = case
    when col like '%value1%' then replace(col, 'value1', '')
    when col like '%value2%' then replace(col, 'value2', '')
    when col like '%value3%' then replace(col, 'value3', '')
    else col
end

Вы также можете сформулировать этот запрос следующим образом - это почти эквивалентно приведенному выше запросу, исключается, если col содержит, например, 'value1' и 'value2' (в этом случае оба будут заменены, а первый запрос заменит 'col1'):

update table set col =
    replace(
        replace(
            replace(col, 'value1', ''),
            'value2', ''
        ),
        'value3', ''
    )

Кроме того, вы можете захотеть filter набор данных перед обновлением, особенно если в вашей таблице много строк. Вы можете сделать это, добавив к запросу предложение where:

where col like '%value1%' or col like '%value2%' or col like '%value3%'
...