2015-06-13 4 views
0

У меня есть таблица, содержащая два столбца, оба имеют значения электронной почты. Я хочу создать запрос, который обновляет определенные данные в обоих столбцах.Обновить определенные значения в более чем одном столбце - SQL

Например, если у меня есть две записи по электронной почте '[email protected]' в одном столбце и три записи '[email protected]' в другом столбце, я хочу, чтобы они оба были обновлены.
Вот, например, я хочу, чтобы все '[email protected]' будет '[email protected]':

enter image description here

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

+0

Пожалуйста, измените вопрос с типовыми данными и желаемых результатов. –

+0

Напишите 2 отдельных обновления. –

+0

@GordonLinoff Я обновил свой вопрос – Tal

ответ

2

Самый простой способ для запуска двух операторов обновления:

update table 
    set col1 = <newval> 
    where col1 = <oldval>; 

update table 
    set col2 = <newval> 
    where col2 = <oldval>; 

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

+0

Таблица предназначена для запросов друзей, а мой ключ пользователя - это письмо, это неправильно? – Tal

+1

@Tal, по-видимому, да, каждый пользователь должен иметь уникальный идентификатор, который должен быть сохранен в таблице запросов друга, в другой таблице этот идентификатор связан с электронной почтой. Вы не должны использовать изменяемые данные как ключ/идентификатор для строк ... потому что именно ваш сценарий происходит, вы * просто * хотите изменить электронную почту и должны обновить ее в 100 местах - не хорошо. – luk2302

+0

@ luk2302 Получил, спасибо ... – Tal

1

Если вы настаиваете из одного оператора:

update table 
    set col1 = iif(col1 = 'aa', 'bb', col1), 
     col2 = iif(col2 = 'aa', 'bb', col2) 
where col1 = 'aa' or col2 = 'aa'