복붙노트

[SQL] SQLite는 조건부 갱신

SQL

SQLite는 조건부 갱신

내가 SQLite는이 같은 성명을 만들 수 있습니까?

update books set
(if number_of_pages > 0 then number_of_pages = number_of_pages - 1)
where book_id = 10

이것에 대한 작업 구문이 있습니까?

해결법

  1. ==============================

    1.이 경우 문은 다음 구문을 사용하여 작동합니다 :

    이 경우 문은 다음 구문을 사용하여 작동합니다 :

    UPDATE
      books
    SET number_of_page = CASE WHEN number_of_pages > 0 THEN (number_of_pages - 1) ELSE 0 END
    WHERE whatever_condition
    
  2. ==============================

    2.이 문에 동일 밤은?

    이 문에 동일 밤은?

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

    편집하다:

    새 성명에 따라 :

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

    3.방금 조건 일부 행을 업데이트하고 그대로 다른 사람를 마칠 경우,이 수행해야합니다 :

    방금 조건 일부 행을 업데이트하고 그대로 다른 사람를 마칠 경우,이 수행해야합니다 :

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

    서로 다른 값 (book_id = 10) 모든 행을 업데이트 할 경우 "반대"조건이 문을 사용할 수 있습니다. 같을 것이다 "다른"값은 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를 사용합니다.

  4. from https://stackoverflow.com/questions/9453651/conditional-update-in-sqlite by cc-by-sa and MIT license