Если вы просто хотите условно обновить некоторые строки и оставить другие нетронутыми, это должно сделать:
update books
set number_of_pages = number_of_pages - 1
where number_of_pages > 0 AND book_id = 10
Если вы хотите обновить все строки (с book_id = 10
) на разные значения,Вы можете использовать 2 утверждения с «противоположными» условиями.Предполагая, что 0 является «другим» значением, это будет выглядеть так:
update books
set number_of_pages = number_of_pages - 1
where number_of_pages > 0 AND book_id = 10
update books
set number_of_pages = 0
where number_of_pages <= 0 AND book_id = 10
Или просто используйте CASE, как предлагали другие.