アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLiteにはREPLACE文がありますが、これを使うと、例えばn,c1,c2,c3フィールドがあるデータsampleに対して「replace into sample (n,c2) values (1,1)」を実行すると、c1とc3はnull値になってしまいます。

一部のSQLデータベースで用意されている「INSERT OR UPDATE」のように、行が存在すれば対象のフィールドのみを書き換え(それ以外のフィールドの内容は維持)、存在しなければ行を追加する構文を作ることは可能でしょうか。

A 回答 (1件)

SQLiteでは、insert or replace しかないけど select文からの入力とサブクエリは使えるから



replace into [table_name] (n,c1,c2,c3)
select x.n, org.c1, x.c2, org.c3
from (select 1 as n, 1 as c2 ) as x
left join [table_name] as org on x.n=org.n ;

n がprimary key または uniqueの前提で1行書き換えまたは、新規挿入。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!