MySQL несколько столбцов ЕСЛИ в INSERT INGORE ON DUPLICATE KEY - PullRequest
0 голосов
/ 05 февраля 2020

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

Как таблица:

a | b | c | key1 | key2
- - - - - -------------
1 | 0 | 0 |   1  | 2
2 | 3 | 4 |   1  | 3

Я хочу обновить только те строки, где значение столбцов 1 - 0 - 0.

Мое решение работает неправильно, поскольку оно обновляет только первый столбец, я думаю, это потому, что после обновления первого столбца второй IF равен false.

INSERT IGNORe INTO testtable (a, b, c, key1, key2) VALUES (100, 200, 300, 1, 2)
        ON DUPLICATE KEY  UPDATE
                     a=IF(a=1 AND b=0 AND c=0, VALUES(a), a),
                     b=IF(a=1 AND b=0 AND c=0, VALUES(b), b),
                     c=IF(a=1 AND b=0 AND c=0, VALUES(c), c);

INDEX KEY: key1 + key2, поэтому, если он одинаковый и текущая строка существует с 1-0-0, обновите.

...