
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で質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Oracle SQL update方法 2 2022/06/22 14:07
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- MySQL UPDATE my_items SET item_name '赤い,甘い,ケーキ' WHERE id 1 2023/01/03 09:52
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- PHP php エラー 2 2022/10/23 16:43
- MySQL MYSQL エラー 2 2022/10/18 11:37
この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
DataSetから、DataTableを取得したい。
C言語・C++・C#
-
6
フォームを画面のど真ん中に表示させたいのですが
Visual Basic(VBA)
-
7
データセットのレコード更新がしたい
Visual Basic(VBA)
-
8
update文で改行を入れる
Oracle
-
9
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
10
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
11
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
12
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
13
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
-
14
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
15
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
16
VB2008で定数に色の設定をしたいです。(初心者)
Visual Basic(VBA)
-
17
VBのReturnの使い方
Visual Basic(VBA)
-
18
C# dataGridViewの値だけクリア
C言語・C++・C#
-
19
VBにおいてフォーム間の変数の引き渡しなど
Visual Basic(VBA)
-
20
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
MySQL/PHP IN文
-
テーブルロックが必要ですか?
-
VIEWの元のテーブルのindexって...
-
クリアエステヴェールについて
-
NOT INをNOT EXISTSで書き直したい
-
mysqlで特定のカラムから下4桁...
-
複数テーブルのGROUP BY の使い...
-
ファビノール
-
SQLサーバから、項目の属性(型...
-
【MySQL】auto_incrementの値を...
-
MySQL NULLだけをカウントして...
-
Access パラメータクエリをcsv...
-
SQL Left Join で重複を排除す...
-
【Transact-sql】 execの結果を...
-
レーサーX【SUPERHEROES】のPC...
-
全角文字を含む行を検索
-
MySqlに登録したデータを更新す...
-
MySQLで1つのレコードだけに処...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報