SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。
SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。
Q&A
解決済
2回答
15864閲覧
総合スコア25
0グッド
0クリップ
投稿2017/03/04 07:50
0
INSERT INTO user_data VALUES (?, ?, ?)
などのようにして要素をtableにinsertする際に、 すでにinsertする要素と同一の要素がtable内に存在 する場合、insertをしないようにしたいのですが、どうすれば よろしいでしょうか? また重複する要素が一つのtable内に存在する場合、 それらを一つの要素にまとめるにはどうしたらよいでしょうか?
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答2件
ベストアンサー
テーブルにユニークインデックスを設定しましょう。
例えばuser_dataというテーブルがあり、 カラムはid, name, email, passの4つだったとしましょう。 その時にemailの重複を防ぎたければ下記のようなSQLでインデックスを作成します。
SQL1CREATE UNIQUE INDEX email_check 2 ON user_data(email);
SQL
1CREATE UNIQUE INDEX email_check 2 ON user_data(email);
参考サイト: UNIQUEインデックス
書式は次の通りです。 SQL
書式は次の通りです。
CREATE UNIQUE INDEX インデックス名 ON テーブル名(カラム名1, カラム名2, ...);
--- 【追記】 > また重複する要素が一つのtable内に存在する場合 その仕組をUPSERTと呼びます。 [sqlite3でレコードがなければ追加、あれば更新 UPSERT](http://d.hatena.ne.jp/arupaka-_-arupaka/20150227/1425021264) 何をどう更新するのかはこのUPSERT文で定義することができます。
投稿2017/03/04 08:01
総合スコア21548
PRIMARY KEY やUNIQUE KEY でSELECT してデータが存在しなければINSERT, 存在したらUPDATEで数量や金額などを加算されては?テーブル定義が提示されていると適切な回答が付き易いかと。
投稿2017/03/04 08:09
総合スコア16419
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
sqliteにinsertする際に要素の重複を防ぐ方法
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。