mysql SET CASE КОГДА ТОГДА с И ожидаемым результатом

62
8

Начальная таблица mysql

 RowIdPaidusedUnique | TypeOfBookkeepingRecord 
---------------------------------------------
1 | 45
2 | 45
3 | 4

Запрос

UPDATE 2_1_paidused 
SET TypeOfBookkeepingRecord = CASE RowIdPaidusedUnique
WHEN ? THEN ? WHEN ? THEN ?
AND TypeOfBookkeepingRecord <> ?
END;

Массив

Array
(
[0] => 1
[1] => 5
[2] => 2
[3] => 5
[4] => 4
)

Хотите получить

Где RowIdPaidusedUnique - 1, а TypeOfBookkeepingRecord - не 4, затем измените TypeOfBookkeepingRecord на 5

Где RowIdPaidusedUnique - 2, а TypeOfBookkeepingRecord - не 4, затем измените TypeOfBookkeepingRecord на 5

Но как результат

 RowIdPaidusedUnique | TypeOfBookkeepingRecord 
---------------------------------------------
1 | 5
2 | 1
3 |

Кажется, что что-то неправильно с AND TypeOfBookkeepingRecord <>?

Мне нужно изменить что-то вроде

WHEN ? AND TypeOfBookkeepingRecord <> ? THEN ?

спросил(а) 2014-05-23T07:32:00+04:00 6 лет, 10 месяцев назад
1
Решение
75

Вы бы хотели сделать это, как TypeOfBookkeepingRecord is not 4 ниже, с помощью оператора CASE и поставить условие TypeOfBookkeepingRecord is not 4 в WHERE.

Смотрите демонстрационную скрипту здесь http://sqlfiddle.com/#!2/9c831/1

UPDATE table1
SET TypeOfBookkeepingRecord =
(CASE WHEN RowIdPaidusedUnique = 1 then 5
WHEN RowIdPaidusedUnique = 2 then 1 END)
WHERE TypeOfBookkeepingRecord != 4

ответил(а) 2014-05-23T07:37:00+04:00 6 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема