2

顧客名を更新して挿入する必要がある複数の行があります。以下のクエリのようなものを異なる名前で何度も実行するのではなく、1 つのクエリでこれを行うにはどうすればよいですか?

UPDATE orders
SET cust_name = 'Sue'
WHERE p_id = 6
4

2 に答える 2

3

あなたは次のようなものを使うことができます

    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)

詳細については、「異なる値と単一のSQLクエリで複数の行を更新する」を確認してください。

于 2012-05-31T20:37:53.440 に答える
0

通常はできません。少なくとも、MySQL、DB2、SQL Server、および PostgreSQL は、異なる WHERE 句が異なる SET 句に適用されるクエリをサポートしていません。

また、その必要はありません。通常できることは、変数のプレースホルダーを含む準備済みステートメントを使用することです。これは、パラメーターのタプルのリストで実行します。言語、データベース アダプタ、およびデータベースによっては、これは非常に効率的な「バッチ」モードで実行される場合があります。

精度を上げるには、使用している言語、データベース、およびデータベース アダプターに関する詳細情報が必要です。

于 2012-05-31T20:43:13.023 に答える