2011-08-06 2 views
0

으로 업데이트하십시오. 안녕하세요, 내 테이블의 열은 : [ID, VALUE, MODIFIED]SQLite (Android)의 테이블을 IF의 열

SQL에서 다음과 같은 업데이트를 어떻게 만들 수 있습니까? 은 내가

UPDATE FROM table SET value = new_value,modified= if (new_value==VALUE) then 0 else 1; 
+0

즉시 떠오르는 질문은 변경되지 않은 값으로 열을 업데이트하는 이유는 무엇입니까? 시간 변경을 미리 감지하고 값이 변경되면 _value_ 및 _modified_를 업데이트하고 값이 변경되지 않은 경우 _modified_를 업데이트하십시오. – Earl

+0

여러 값을 사용하는 다중 행 업데이트 – Addev

답변

1

쿼리 원본 데이터 NEW_VALUE 정수 (int) =이하고있는 경우 - 다른 문을 사용합니다.

if(originalValue == newValue) { 
    // Update query 
} 
else { 
    // Update query 
} 
+0

빠른 응답을 주셔서 감사합니다. 그게 사실 메신저 방법. 하지만 그 프로그램을 하나의 쿼리로 업그레이드하려고 시도하는 중입니다. – Addev

+0

힌트 : 코드를 이해하기 힘들게 압축하는 것은 "업그레이드"가 아닙니다. – Earl

1
그것이 SQL 외부에서 수정되는 경우 평가하지 왜

:

int isModified = newvalue != VALUE ? 1 : 0; 

그리고 SQL에

:

UPDATE FROM table SET value = new_value, modified = isModified 
+0

쿼리를 수행하기 전에 "이전 값"이 없습니다. 난 그냥 newvalue받을 및 이전 하나를 검색하는 쿼리를 피하려고 노력하고있어 – Addev

1

일반 SQL에서 당신이 이런 식으로 작업을 수행 할 수 있습니다

UPDATE tablename 
    SET value = new_value, 
    modified = 
     CASE 
      WHEN new_value = value THEN 0 
      ELSE 1 
     END 

하지만 SQLite su pports 사례

+0

SQLite는 CASE를 지원하지만이 스 니펫은 MySQL 또는 Android에서 작동하지 않습니다. 답변 주셔서 감사합니다 – Addev

+0

안녕하세요, 저는 방금 내 답변을 수정했습니다 - 미안 해요 테스트하지 않고 게시해서는 안됩니다! – Pikaling

관련 문제