顧客名を更新して挿入する必要がある複数の行があります。以下のクエリのようなものを異なる名前で何度も実行するのではなく、1 つのクエリでこれを行うにはどうすればよいですか?
UPDATE orders
SET cust_name = 'Sue'
WHERE p_id = 6
顧客名を更新して挿入する必要がある複数の行があります。以下のクエリのようなものを異なる名前で何度も実行するのではなく、1 つのクエリでこれを行うにはどうすればよいですか?
UPDATE orders
SET cust_name = 'Sue'
WHERE p_id = 6
あなたは次のようなものを使うことができます
UPDATE mytable
SET myfield = CASE other_field
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3)
通常はできません。少なくとも、MySQL、DB2、SQL Server、および PostgreSQL は、異なる WHERE 句が異なる SET 句に適用されるクエリをサポートしていません。
また、その必要はありません。通常できることは、変数のプレースホルダーを含む準備済みステートメントを使用することです。これは、パラメーターのタプルのリストで実行します。言語、データベース アダプタ、およびデータベースによっては、これは非常に効率的な「バッチ」モードで実行される場合があります。
精度を上げるには、使用している言語、データベース、およびデータベース アダプターに関する詳細情報が必要です。