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

sqlについて。
レコードがあれば、update、なければinsertするSQLを考えています。

php+mysqlを使うのですが、この処理を一番シンプルで負荷をかけない方法を取るにはどうすればいいのでしょうか?

一旦検索して、あるかどうかを調べて、PHPでレコードがあったら?と分岐させるよりも簡単にできないものでしょうか?

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL PHP SQL いもの シンプル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● b-wind
●27ポイント

http://dev.mysql.com/doc/refman/4.1/ja/replace.html

REPLACE 構文で出来ます。

ただし、マニュアルにもあるように Primary Key か、UNIQUE インデックスが設定されている事が前提となります。

◎質問者からの返答

項目がa,b,nとあるとして、

a,bの組み合わせがユニークであるという条件で検索して、その組み合わせがなければ、n+1にするということをしたいと考えています。

その場合は、これは使えないですよね。

テーブルの構成事体を変えても構わないのですが、この場合はやはり他の方法になるのでしょうか?

例えば、aaa,bbb,n,aaa+bbbのようにして、一意であるかどうかを判断するためだけの項目を一つ作るのは、適切ではないでしょうか?


2 ● b-wind
●27ポイント

http://dev.mysql.com/doc/refman/4.1/ja/replace.html

a,b の2カラムで主キーもしくはUNIQUE制約が付くのであれば十分です。

Primary Key および、UNIQUE インデックスは複数列でも可能ですし、REPLACE に複数列でダメという制限も記述されていません。

◎質問者からの返答

それは気づきませんでした。

ありがとうございます。

調べてみます。


3 ● kurukuru-neko
●26ポイント

>レコードがあれば、update、なければinsert

>するSQLを考えています。

レコードがあれば REPLACEだとDELETE→INSERT

なければINSERTになるような気もしますが。


INSERT

http://dev.mysql.com/doc/refman/4.1/ja/insert.html

INSERTのON DUPLICATE KEY UPDATE を

使えば、重複時には、UPDATE?

重複しない場合には、INSERTの部分が動作します。

◎質問者からの返答

ありがとうございます。

しかし、困ったことにMySQLのバージョンが4.0.24でした。使えないようです。

関連質問


●質問をもっと探す●



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