Ваш оператор CASE не имеет ничего , касающегося того, какие строки затронуты. Это полностью до вашего предложения WHERE:
WHERE Key2 IN (123782199165241826,5594091315209354374, ..., 3553840348728167644)
AND Key1 IN (400,394,391,389,397);
Каждая строка, соответствующая этим условиям, будет обновлена. Тогда возникает вопрос: что происходит со строками, которые не соответствуют условию CASE?
В этой части я не уверен на 100%, что будет делать MySQL, так как я больше похож на SQL Server. Я подозреваю, однако, что ваш оператор CASE приводит к NULL, который затем присваивается FieldName. Также возможно, что MySQL решит ничего не менять, но я все же ожидал бы, что он сообщит обо всех строках, которые соответствуют вашему предложению WHERE, как обновленные.
Вы, вероятно, должны иметь ELSE FieldName
в конце вашего оператора case, чтобы быть определенным , вы получаете последнее поведение (без изменений), а не первое (установлено в NULL).