Я знаю, что это не отвечает на ваш первоначальный вопрос, но в вашей таблице нет ключа, и из-за этого возникает проблема, связанная с обращением к определенной строке.
Таким образом, мое предложение - если это позволяет конкретное приложение - было бы добавить ключевой столбец к вашей таблице (например, REAL_ID как INTEGER).
Тогда вы можете узнать самый низкий идентификатор для дубликатов
select min (real_id)
from duptest
group by (id, nonid)
и обновите только эти строки:
update duptest
set nonid = 'C'
where real_id in (<select from above>)
Я уверен, что оператор обновления может быть несколько настроен, но я надеюсь, что он иллюстрирует идею.
Преимущество - более «чистый» дизайн (ваш столбец id на самом деле не id) и более портативное решение, чем использование версий rowid для конкретных БД.