• ベストアンサー

MySQL側で計算してもらってレコードを更新できるか??

質問があるのですがよろしくお願いします。 例えば、「point」というカラムのレコードの数値を+1して更新したい時に、 update文の中に「id~番のレコードの、「point」のカラムの数値を+1する」みたいな命令を書いて、 MySQL側で計算してもらってレコードを更新することは出来るのでしょうか? それとも、やはり一度select文で数値を取り出して、 perlやPHP等のミドルウェア側で数値を+1してからupdate文で更新するしかないのでしょうか? どなたか分かる方いらっしゃいましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

UPDATE `table_name` SET `point` = `point` + 1 WHERE `id` = xxx これでいけます。

miraikako
質問者

お礼

回答ありがとうございます! 参考にさせて頂きますm(__)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MySQLで更新の結果を知るには

    こんばんは 業務で以下の切り分けをしたいのですが、可能でしょうか。 SOAP通信を使っていて、パフォーマンス的な観点から、select文は使用したくないと思っています。 ■環境 ・PHP5 ・MySQL ・FreeBSD6 ■やりたいこと Update文で更新を行ったときに、データそのものがなくて更新できなかったのか、データは存在するがPK以外の条件がマッチしなくて更新できなかったのかで、エラーコードを分けたい 例えば、  update tableA set column1='aaa' where pk1=1 and pk2=2 and column2='bbb'; といったSQL文で、「pk1=1 and pk2=2」に合致するデータがないのか、データは存在するが「column2='bbb'」には合致しなくて更新されないのかの切り分けをしたいのです。 かなり、困ってしまっています。 SQL文でできない場合でも、何かしらの解決方法がありましたら、よろしくお願いいたします!!!

  • MySQLで最新のデータから一回ずつ順番に取り出す方法 PHP

    idと、dataという2つのカラムで構成されたMySQLがあります。 そのidはプライマリキーに設定してあり、auto incrementとして、どんどん数値が増えていく設定です(phpMyAdminを使ってテーブルを作っています) そこで、そのid番号の現在の最新のものを php側から呼び出して取得し、 その次、しばらくすると、PHP側で再びその最新から2番目 (2番目に新しいデータ)を取得する命令を 投げたいと思っています。 そのあとは、同じように、3番目に新しいもの、 4番目、5番目と続けたいと思っています。 その際、毎回、php側で MySQLのデータの読み出し命令を送るわけですが、 その際、最新のもの、2番目に最新のものを 時間差でSELECTしていくには、 どのようにすればいいでしょうか。 PHP側で「いま3番目に新しいものを読んだので次は4番目に新しいもの」というように前回の状態を保持しておくことってできるのでしょうか。 また、このidというのは、途中で消したりしているidもあったりするので、1番から始まっていたとしても、途中の30番とかが抜けていたりして、歯抜け状態ですので、id番号でセレクトするとエラーになる可能性が高いです。 なので、id番号ではなく、 テーブルの上の行から選んでいくという方法が ベストだと思っています。 そのような指定をMySQLの構文で指定することって可能なのでしょうか? ちなみに、一応、何番のidを読むというのは理解しており、 以下のような感じのSELECT文をphpのqueryで使っていたりします。 table_aから、変数$indexNumの値のidを読むという処理を、 変数$queryに入れている文が以下になります。 $query = "SELECT arrayset FROM `table_a` WHERE id= '$indexNum'"; このあたりのノウハウをご存知の方、教えてくださいますと幸いです。 お願いいたします。

    • ベストアンサー
    • MySQL
  • csvファイルを使ってMySQLのテーブルを更新し

    約2万件ある15個のカラムで構成されるMySQLのテーブルがあります。 このテーブルをcsvファイルを使って更新しようと考えています。 csvファイルにはレコードIDとあるカラムの変更する値の2つのセルで 構成されています。 行数は毎回異なりますが、だいたい300行前後です。 csvファイルの具体的イメージはこんな感じです。 id order ============ 2,  200 4,  10 7,  460 11,  35 MySQLのテーブルの方にも「id」と「order」というカラムが存在します。 java や PHP を使ってやる方法はわかるんですが、プログラムを作成しないで SQLだけで行いたいと考えています。 LOAD DATA LOCAL INFILE などがあることがわかったのですが、レコードを REPLACE  するのではなく、一部のカラムをアップデートしたい、ということです。 どなたか、教えて頂けると助かります。 よろしくお願い致します。

  • MySQLのTimestamp型の使い方

    MySQLとPHPで製作しています。 registdateとlastaccessとういうカラムにtimestampを設定して 登録操作でINSERT文にregistdateとlastaccessの両方にNow()として登録。 更新操作でUPDATE文にlastaccessのみにNow()として更新したいのですが、更新作業の際に2つのカラムが更新されます。設定の方法を教えてください。

    • ベストアンサー
    • MySQL
  • MYSQLのレコードを上書きしたいのですが…

    phpからMYSQL5に接続して以下のようなデータベースを作りました。 no name comment ←カラム名 1  山田 起きる 2  山田 叫ぶ 3  山田 寝る これを上書きして、 no name comment 1  山田 食べる 2  山田 遊ぶ 3  山田 寝る というようにレコードを更新したいのです。 しかし、どうやっても1、2、3の後に4、5、6と続いてしまいます。 「no」カラムにはauto_increment+primary keyを設定しています。 phpで構文を送る前に mysql_query("alter table db1 auto_increment=0"); を設定してみたり、 mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); や mysql_query("replace into db1 (name,comment) value ('山田','$comment')"); を試してみましたが、上手く行きませんでした。 現在は、 mysql_query("delete from db1"); mysql_query("alter table db1 auto_increment=0"); ---php処理--- mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); というように、二度目の書き込みを行う前に一旦テーブル内のレコードを すべて削除して書きなおすという方法を取っています。 しかし、数が多くなると一旦削除する作業を行うと処理が遅くなってしまうと思いますので、上書きしてデータベースを更新したいと思っているのですが、どのようにすればよいでしょうか?

    • ベストアンサー
    • MySQL
  • MySQL+PHP 特定レコードの更新と作成

    MySQL+PHPの初心者です。 特定レコードの変更または新規作成のサンプルなどあればお教えいただけるでしょうか。 例えば特定商品の単価のレコードがあれば新しい単価に変更と そのレコードが無ければ新規にレコードを作成するようなケースになります。 VBAなどでは検索のSQL文からレコードセットを作成し レコードが無い場合は レコードセット名.addnewで必要なフィールドに 値をセットし レコードセット名.update 該当するレコードがあった場合は レコードセット名.edit で必要なフィールドに 値をセットし レコードセット名.updateなど簡単な処理なのですが MySQL+PHP の場合データの検索と新規レコードの単純な記述は ある程度はわかるのですが上記のようなケースは実際どのように 書かれているのかお教え願えると幸いです。 商品単価テーブルには商品コードと単価のフィールドになります。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • XAMPPのMySQLで削除済みレコードが表示される

    XAMPPのMySQLで削除済みレコードが表示される XAMPP1.7.3をWinXP Proにて運用しています。 PHPにてselectのSQLを実行したところ、削除済みのレコードが表示されるため困っています。 これまでの経緯は 1.phpMyAdminにてDBとテーブルを作成し、サンプルデータを4件登録 2.PHPからselectで条件なしで全レコードが表示されるのを確認 3.条件をつけてselectし、それぞれの条件にマッチしたレコードが表示されるのを確認 4.phpMyAdminにて1レコードを削除 5.条件をつけてselectし、削除したレコードが表示されるのを発見 6.phpMyAdminのSQLで同じ条件のSQLを実行し、削除レコードが表示されないのを確認 7.PHP側のselect後にDBCloseをしているかの確認 8.phpMyAdminにてテーブルの修復、最適化などを実行 9.MySQLの再起動 以上の操作をしてみましたが、やはりPHPからのSQLの結果に削除されたレコードが表示されてしまいます。 色々なサイトで同じような現象のTipsがないか探しましたが、見つけきれず質問させていただきます。 同じような現象に対しての対応を紹介したサイトや、対処方法をご教授下さい。 よろしくお願いします。

  • 同テーブルで指定カラム値を相互更新(入替)したい

    下記のようなカラムがある時、DBから取得した値を、引数(並べ替え順)に応じて、(同じカラムを)更新するSQL文を教えてください ●カラム id1 sex1 age1 id2 sex2 age2 id3 sex3 age3 id4 sex4 age4  ●引数例 3 1 2 ※1番目が3、2番目が1、3番目が2 ・「1の数字が付いたカラムの値」を、「3の数字が付いたカラムの値」で更新したい ・「2の数字が付いたカラムの値」を、「1の数字が付いたカラムの値」で更新したい ●質問 ・MySQLだけで処理可能でしょうか? UPDATE テーブル名 SET id1=(SELECT id3 FROM テーブル名 WHERE id1=id3値),sex2=(SELECT sex3 ……; ・それとも、一度、全ての値を取得して、PHP等で処理するのでしょうか? UPDATE テーブル名 SET id1=id3値,sex1=sex3値,age1=age3値,id2=id1値 ……; ・他に何か良い方法はあるでしょうか(一旦別テーブル作成後、戻す等) ●環境 MySQL5.1

    • ベストアンサー
    • MySQL
  • MYSQLのレコードの数を表示したいのですが。

    PHPとMySQLでPHPからSQL文を送って、PHPにMySQLにレコード数を表示したいのですが、Resource id #3 といったようになってしまいます。 一瞬表示されたと思っていたのですが、実際のレコードの数と違ったのでやはり失敗でした。 どのような方法で表示すれば上手く表示されるでしょうか。初歩的なことで申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • Mysql関数でデータ更新に関する基本的な質問

    ■使用環境 FreeBSD 6.2 Mysql4.0.27 PHP5.2.3 Mysql関数 PHP5でMysqlデータベースの更新時に、現在のcolumnの内容に 新しく入ってきた数値を加算したいのですが、sum()という関数 がある事までは解ったのですが、この場合の使い方が解りません。 SQL自体、接続と検索処理しか使った事が無く、初心者と過程して、 教えていただけませんでしょうか。 ※sum()関数の使用が適切で無ければ、申し訳ありません。 ■補足 テーブル名:test カラム名 :ruikei 知りたい事。 入力フォームより送られてきた、新しい売り上げ'$uriage'を 'test'テーブル'ruikei'にPHP取得変数'$uriage'を加算する MySQL文を発行するPHPコード。

    • ベストアンサー
    • MySQL