Я хочу найти и заменить несколько значений в столбце таблицы в одном запросе MYsql - PullRequest
1 голос
/ 25 апреля 2010

Запрос, где X обновляет Y и где A обновляет B в столбце Mysql Table.

Как я могу сделать это в MYsql в одном запросе к тому же столбцу в конкретной таблице. Я хочу найти и заменить несколько значений в столбце таблицы.

Условия в таблице1 в столбце1

Where X update Y 
and
Where a update b
and
Where 1 update 2
and
Where 3 update 4
and
Where value1 update value 2

и т. Д.

Я могу сделать это индивидуально, но как я могу сделать это быстрее? Есть ли функция mysql, чтобы помочь мне с этим?

У меня есть около 120 столбцов с 200 значениями поиска и замены / обновления для каждого столбца.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 апреля 2010

Вы можете использовать что-то вроде этого:

update table table set A = if(conditionA, newA, A), B = if(conditionB, newB, B)

Но я ожидаю, что это будет медленнее, чем 2 отдельных обновления, потому что он пытается сбросить значение каждой строки обратно на себя, когда оно не соответствует условию.

Вы можете оптимизировать его, добавив:

update table table set A = if(conditionA, newA, A), B = if(conditionB, newB, B)
where conditionA or conditionB

В некоторых случаях это может быть быстрее, чем 2 запроса.

0 голосов
/ 25 апреля 2010

Вы можете сделать что-то вроде этого:

UPDATE table1
SET
    col1 = CASE WHEN col2 THEN a ELSE col1 END,
    col3 = CASE WHEN col4 THEN b ELSE col3 END

Обратите внимание, что при сбое условия это значение возвращается к самому себе, в результате чего оно остается неизменным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...