2011-07-06 9 views
1

今日の日付がデータベースにない場合は、挿入と更新のステートメントを作成する必要があります。この部分は私がした])今日から得る。データが存在する場合、更新する方法新しいデータを挿入する(複数行)

しかし、挿入や更新が必要な行がたくさんあります。

1)データベース内の過去4日間をチェックします。今日が含まれていない場合は、今日のデータを挿入して最後の3日間のデータを更新します。一方、今日が含まれている場合は更新されます。

P.S:INSERT... ON DUPLICATE KEY UPDATEを使用しようとしましたが、影響を受けるのは1行だけです。

これを使用すると、1行のデータだけが挿入され、残りの部分は更新されます。

私にいくつかのアドバイスや例があります。

+0

テーブル行の表示例を教えてください。私は問題を理解するのに苦労している。 – nobody

答えて

0

これを行うにはどのような言語を使用していますか?私は前にRubyで何か似たようなことをしてきました。データベースレベルでカラム(あなたのケースの日付)をユニークにして、各レコードを挿入してみてください。 Dateが一意ではないために例外がスローされると、QTYを更新します。

1

あなたは、バルクとし、一時テーブルTBLにExcelからデータをコピーして、あなたの実際のテーブルがTBL1あるこの

begin transaction; 
if not exists(select * from tbl(updlock holdlock) where...) 
begin 
    insert into tbl1... 
else 
begin 
    update tbl1... 
end 
commit; 
0

ような何かを、私はそれが複数の挿入をサポートして言うmysqlの上でこの記事を見つけました。 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

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

という記述は、以下の2つの文と同じです:

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

我々はまっすぐに編集したいのであれば、我々はこのような何かを行うことができます。

INSERT INTO table (uniquekey,data) VALUES (1,2),(4,5) 
     ON DUPLICATE KEY UPDATE data=VALUES(data); 
関連する問題