質問編集履歴

1 修正

te2ji

te2ji score 24024

2016/09/03 19:13  投稿

update を前提に、条件合致がなければ insert する sql
データをアップデートするときの sql を検討しています。
・category , name を評価  
・既存レコードと合致すれば、update  
・なければ insert  
データが以下であった時、
category 1, name aaa , data d07
であれば、id 1 を update し
category 4, name aaa , data d07
category 3, name bbb , data d07
category 1, name ddd , data d07
であれば、id 7 で insert したいと考えています。
| id| category| name| data|
|:---------|:---------|:---------|:---------|
| 1| 1| aaa| d01|
| 2| 1| bbb| d02|
| 3| 1| ccc| d03|
| 4| 2| aaa| d04|
| 5| 2| ddd| d05|
| 6| 3| aaa| d06|
|------|---------|------------|---------|
category , name はいずれも重複を許可しています。(unique ではありません)
id, category , name に PRIMARY KEY を設定すれば、REPLACE INTO でいけるかと思ったのですが、意図した動作にはなりませんでした。
`REPLACE INTO tmp (category, name, data) VALUES (1, 'aaa' , 'd07');`
普通に insert されます。。。
うまいやり方があれば、ご教示お願いします。
  • MySQL

    11812 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SQL

    5644 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る