sqlite3でレコードが
・重複していない場合はレコードを新たに追加
・重複している場合はカウンターにプラス1を行う
という処理を行いたいと考えています。
カラムは以下の通りです。
ID, data1, data2, data3, counter
data1、data2、data3の3つのデータで重複を判断し、
3つのデータが全て重複する場合はカウンターにプラス1します。
3つのうち、1つでもデータが異なる場合は、レコードを追加します。
ネット上のあらゆるSQL文を試してみたのですが、上手くいかず困っております。
どうぞよろしくお願いいたします。
参考にした記事はこちらです。
http://scrap.php.xdomain.jp/exists_insert/
試したSQL文です。
cur.execute("""
UPDATE table1 SET counter = counter + 1 WHERE EXISTS (
SELECT * FROM table1
WHERE table1.data1 = '{0}' AND table1.data2 = '{1}' AND table1.data3 = '{2}'
);""".format(data1,data2,data3))
cur.execute("""
INSERT INTO table1 (data1, data2, data3) SELECT '{0}', '{1}', '{2}'
FROM table1 WHERE NOT SELECT EXISTS(
SELECT * FROM table1 WHERE data1='{0}' AND data2='{1}' AND data3='{2}'
);""".format(data1, data2, data3))
回答3件
あなたの回答
tips
プレビュー