MYSQLで

REPLACE INTO TESTA (AAA,BBB,CCC,DDD) VALUES ('1234',BBB+10,current_timestamp, current_timestamp)
というSQL文を実行して
BBBの値を10ずつ足して行きたいのですが
うまく行きません。

どうしたらいいのでしょうか??
キーはAAAです。


レコードが存在しない場合は、INSERTしないといけないので
REPLACE INTO で行ってます。

回答の条件
  • 1人2回まで
  • 登録:2008/12/24 14:24:39
  • 終了:2008/12/24 16:41:58

回答(1件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/12/24 16:27:39

ポイント10pt

こんな感じでいかがでしょうか。

REPLACE INTO TESTA (AAA,BBB,CCC,DDD) ('1234',SELECT id+10,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP FROM a);
  • id:mj99
    回答内容が気になったのですがキャンセルでしたか。
    INSERTのVALUES句について以下に
    http://dev.mysql.com/doc/refman/5.1/ja/insert.html
    「expr式は、値のリストに早いうちに設定された全てのカラムを参照する事ができます~~~」
    とあるのですが、どうあっても「使用できる値」は「VALUES句に出現したものだけ」ですよね。

    INSERT ON DUPLICATE KEY UPDATEが要件に合うとは思うが、好きじゃない。
    http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html
    プログラムであるのなら、すなおにSELECT⇒INSERTorUPDATEと書いたほうが挙動を追いやすい。
    INSERT ON DUPLICATEのほうが処理効率が良いとも思えないし。

    どうでもいいけど、MySQLて特に方言多いですね。
  • id:pahoo
    質問者が、全レコードに対する increment を希望していたのかどうか確認したかったのですが、キャンセルということで残念でした。
    私の回答は mi99 さんがオープンして下さったんでしょうか? ありがとうございます。
    回答のやり方は、MySQL のバージョンにも依存するんじゃないかと、ちょっと気になっています。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません