0

複数の列を持つテーブルがあり、それに乗数を挿入しています。

すなわち:

INSERT INTO accounting_positions
KEYS (`date`, `customer`, `type`, `product`, `volume`, `payout`, `count`)
VALUES ('2012-01-10','10','regular','60sec',65,83,13),
('2012-01-10','10','regular','binary',15,83,13)
ON DUPLICATE KEY UPDATE volume=volume+CURRENT_COL_VAL;

「CURRENT_COL_VAL」の代わりに何を書けばいいですか?挿入からの値で重複行を更新したい場合。

複数の挿入のすべての行挿入で異なるため、静的な番号をその中に配置できないためです

4

1 に答える 1

2

insert-on-duplicateのmysql ドキュメントを見てください。そこから、次のようなものを使用できることがわかります。

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

あなたの場合:

INSERT INTO accounting_positions
    (`date`, `customer`, `type`, `product`, `volume`, `payout`, `count`)
VALUES 
    ('2012-01-10','10','regular','60sec',65,83,13),
    ('2012-01-10','10','regular','binary',15,83,13)
ON DUPLICATE KEY UPDATE volume=volume+VALUES(volume);

これにより、新しい値と古い値が追加されます。指定された挿入値で行を上書きするだけの場合は、次のようにします。ON DUPLICATE KEY UPDATE volume=VALUES(volume)

于 2013-05-12T12:51:01.580 に答える