1
値が指定されていない列がそのまま残るように行の更新/置換を実行したいとします。 4列テーブルの場合:sqlは一部の列を残して行を更新/置換する
-- expecting row = 99|a|b|?
replace into game_data (id, col_a, col_b) values (99, "a", "b");
-- expecting row = 99|a|b2|c < a remains unchanged
replace into game_data (id, col_b, col_c) values (99, "b2", "c");
これは可能ですか?そうでない場合は、既存の行を抽出し、必要に応じてデータをマージして置換を実行する代わりに、データベースが実行する必要があるようなものがあると思われます。スキーマのこと?
(sqlite3のためのbashスクリプトから使用されている)
クエリが機能することを考慮すると、 'REPLACE'は文字列関数ではないことが非常に明白です。ドキュメントを読む:http://www.sqlite.org/lang_replace.html –
ああ、そうです。私はSQLの方言を混ぜています。それを指摘してくれてありがとう。 – payne
私は好きなやり方で動作しますが、文を構築するのは苦痛になります。私は同じ問題の別の投稿に出くわしました。返信には2番目のステートメントが必要であり、構文は少し違っています。 2つの部分からなる第2のステートメントが必要ですか? http://stackoverflow.com/questions/4677066/sql-a-query-to-insert-new-record-or-replace-only-some-fields – hanlonj