Conditional update in SQLite Conditional update in SQLite sqlite sqlite

Conditional update in SQLite


A CASE statement should work with the following syntax:

UPDATE  booksSET number_of_page = CASE WHEN number_of_pages > 0 THEN (number_of_pages - 1) ELSE 0 ENDWHERE whatever_condition


Isnt that equal to this statement ?

update books set number_of_pages = number_of_pages - 1 where number_of_pages>0

Edit:

according to new statement :

update books set number_of_pages = number_of_pages - 1 where number_of_pages>0 and book_id = 10


If you just want to conditionally update some rows and leave others intact, this should do:

update booksset number_of_pages = number_of_pages - 1where number_of_pages > 0 AND book_id = 10

If you want to update all rows (with book_id = 10) to different values, you can use 2 statements with "opposite" conditions. Assuming 0 is the "other" value, that would look like this:

update booksset number_of_pages = number_of_pages - 1where number_of_pages > 0 AND book_id = 10update booksset number_of_pages = 0where number_of_pages <= 0 AND book_id = 10

Or just use CASE as others have suggested.