
1テーブル&複数レコードの更新に対して1度のupdate文での処理方法
Delphi2010+SQL SERVER 2005で開発しています。
update文で、
現在下のようにwhileで複数レコードに対して、
1回、1回、sqlを発行して、更新しています。
これを、一度のSQLの発行で処理できないものでしょうか?
更新テーブルは1つで、更新する項目も同じです。
更新するデータと、where句の条件が異なります。
もし可能なようでしたら、どうかご教授お願いします。
update table set A=1,B=2 where id=1
update table set A=2,B=3 where id=5
update table set A=9,B=99 where id=7
update table set A=5,B=10 where id=15
update table set A=1,B=10 where id=75
No.4ベストアンサー
- 回答日時:
ですか・・・。
じゃあWhileで発行するのをやめたらどうですか?
BEGIN TRAN
update table set A=1,B=2 where id=1;
update table set A=2,B=3 where id=5;
update table set A=9,B=99 where id=7;
update table set A=5,B=10 where id=15;
update table set A=1,B=10 where id=75;
COMMIT
まとめて実行・・・。
ありがとうございました。
まさにおっしゃる通りで、できました。
まとめて、クエリを発行できることを知らなかったもので、
初歩の初歩なのかもしれませんが、
目から鱗でした。感謝です。
皆さんさんありがとうございました。
No.3
- 回答日時:
いいかどうかはともかくとして。
。update table
SET
A=CASE id WHEN 1 THEN 1 WHEN 5 THEN 2 WHEN 7 THEN 9 WHEN 15 THEN 5 WHEN 75 THEN 1 END,
B=CASE id WHEN 1 THEN 2 WHEN 5 THEN 3 WHEN 7 THEN 99 WHEN 15 THEN 10 WHEN 75 THEN 10 END
WHERE id IN (1,5,7,15,75)
ありがとうございます。
やってみたのですが、
whenの条件が最大で10万以上になってしまい、
どうやら文が長すぎてダメなようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
CloseとDisposeの違い
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
-
4
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
5
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
6
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
7
DataSetから、DataTableを取得したい。
C言語・C++・C#
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
データセットのレコード更新がしたい
Visual Basic(VBA)
-
10
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
11
Visual Basic.NETの、Form 間での引数の引渡し方法を教えてください。
Visual Basic(VBA)
-
12
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
13
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
14
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
-
15
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
16
[C#] DataGridViewでコンボボックスでの変更がdataTableに反映されません
その他(プログラミング・Web制作)
-
17
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
18
C# dataGridViewの値だけクリア
C言語・C++・C#
-
19
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
20
VBにおいてフォーム間の変数の引き渡しなど
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
SQL Left Join で重複を排除す...
-
クエリ表示と、ADOで抽出したレ...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
グラビアアイドルからAV女優に...
-
エラー 1068 (42000): 複数の主...
-
sqlで、600行あるテーブルを100...
-
SQLサーバから、項目の属性(型...
-
NOT INをNOT EXISTSで書き直したい
-
PL/SQLの変数について
-
select文のwhere句に配列を入れ...
-
LEFT JOIN と GROUP BY
-
WordpressのContact form 7でzi...
-
inner joinをすると数がおかし...
-
MySQL NULLだけをカウントして...
-
副問合せの書き方について
-
前のidをコピーするSQL文
-
[MySQL] UNIQUE制約の値を更新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報