2016-07-11 5 views
0

그래서 마지막 값으로 채우기를 원하는 NULL 값을 가진 테이블이 있습니다. 수정 된 컬럼으로 새 테이블을 선택할 수는 있지만 데이터베이스의 값을 업데이트하는 방법을 모르겠습니다. 누군가가 업데이트 문을 도와 줄 수 있습니까?SQLite 채우기 null 값

select b.timeStamp, 
     b.var_5, 
    (select a.var_5 from wme_test as a where a.timeStamp<=b.timeStamp and a.var_5 <> 'NULL' order by timestamp desc limit 1) as correctedVar5 
from wme_test as b 

이 쿼리의 출력이

enter image description here

답변

2

당신은이 작업을 수행하기 위해 상관 업데이 트를 사용할 수 있습니다.

update wme_test 
set var5 = (select var5 
      from wme_test 
      where tm >= wme_test.tm and var5 is not null 
      order by tm limit 1) 
where var5 is null 
테이블에서 가장 오래된 타임 스탬프이 업데이트 될 수 없음을

Sample Fiddle

참고. 이전에 null 일 경우 여전히 null입니다.

+0

... 또는 "매우 짧은 프로그램이나 저장 프로 시저를 작성할 수 있습니다."아마도 내가 * 더 쉽게 * 볼 수 있기 때문에 * 개인적으로 * 선택하려고하는 것일 수 있습니다. ** "컴퓨터가 실제로 할 일, 이유." ### * (아니, 나는 당신의 답변에 대해 논박하지 않고있다 : 실제로, 나는 그것을지지했다.) *이 특정 어플리케이션을위한 * –

+0

나는이 쿼리를 실행하는 것이 가장 효과적이라고 생각한다. 고맙다. 즉, 처음에는 내부 테이블 (서브 쿼리 중 하나를 의미) 대신에 외부 테이블을 다시 묶는 방법에 대해 확신하지 못했습니다. 마지막으로 내림차순을 추가하고 변수 이름을 설정해야합니다. 쿼리가 다음과 같이 종료되었습니다. update wme_test var_13 = (var_13을 선택하십시오.) 으로 wme_test의 을 선택하십시오. 여기서 timeSTamp <= wme_test.timeStamp 및 var_13은 null order by timeStamp desc limit 1) 여기서 var_13은 null입니다. – heczaco