人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLについて質問

テーブルA
フィールド1
フィールド2

レコードを追加or更新する場合なのですが、フィールド1に同じ値のレコードが存在する場合は、そのレコードのフィールド2を更新して、フィールド1に同じ値のレコードが存在しない場合はレコードを新規に登録するという流れを作りたいのですが、一度テーブルAを呼び出してフィールド1の値をチェックする方法しか思いつきません。

上記のような場合どの様にするのが良いのでしょうか?

●質問者: black_kenchan
●カテゴリ:ウェブ制作
✍キーワード:MySQL フィールド レコード 存在 更新
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

一般的にはselectでinsertまたはupdateに条件分岐させますが、MySQLの場合ON DUPLICATE KEY UPDATEを使って1文にまとめることができます。詳細は下記リファレンスの最後の方を参照ください。

◎質問者からの返答

物凄く参考になりました。

有難う御座います。


2 ● chuken_kenkou
●35ポイント

こういった処理は、「存在すれば更新、存在しなければ追加」とするのが基本ですが、

MySQL 4.1以降なら、MySQLは独自仕様を持っています。


MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.3 INSERT 構文


INSERT文で、 ON DUPLICATE KEY UPDATE 節を

指定する方法です。


INSERT INTO table (a,b,c) VALUES (1,2,3)
 ON DUPLICATE KEY UPDATE c=c+1

は、a が UNIQUE として宣言されていて、かつすでに 1 度、値 1 を保持している場合、次の

コマンドと同じになる。


UPDATE table SET c=c+1 WHERE a=1

ただし、あくまでもMySQLの独自仕様ですので、他のRDBMSのサーバにも同じSQLを投げたいと

いった場合は使えませんので注意してください。

◎質問者からの返答

物凄く参考になりました。

有難う御座います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ