2016-07-11 17 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

私はこのクエリの実行がうまくいくと信じています。最初は、内側テーブル(サブクエリの1つを意味する)の代わりに外部テーブルをどのように再配置するかについては不明でしたが、どちらも同じテーブルです。最後に降順を追加して変数名を設定するだけでしたが、クエリは次のようになりました:update wme_test set var_13 =(var_13を選択してwme_testの をb とします。ここで、timeStamp <= wme_test.timeStampとvar_13はありません。 null order by timeStamp desc limit 1) ここで、var_13はnullです。 – heczaco

関連する問題