2

次のような構造のテーブル A があります。

ID   Name  City  zip

1    xxx   wer   134

2    yyy   qwe   234

3    zzz   ert   256

4    www   qwe   567

今度は、1 つの SQL クエリで複数の行を更新したいと思います。たとえば、クエリ:

UPDATE A
   SET zip= '355'
   WHERE id= '2';

1 つの行を更新します。ZIP が異なる 1 つのクエリで ID 1 と 4 の行も更新したい場合はどうすればよいですか?

4

3 に答える 3

5

1 つのクエリで複数の行を同じ zip に更新する場合は、次を使用できます。

UPDATE A
   SET zip= '355'
   WHERE id in ('1','4');

ただし、複数の行を zip 値に更新したい場合、これは、どの ID がどの zip を取得する必要があるかの背後にあるロジックなしでは実行できません。たとえば、いくつかの異なる値を実行したい場合は、次のようなものを使用できます。

UPDATE A
   SET zip= decode(id,'1','100','4','400')
   WHERE id in ('1','4');

これにより、id が '1' の行の zip が '100' に設定され、id が '4' の行の zip が '400' に設定されます。必要な数の引数を追加できます。リストされていないものにデフォルト値が必要な場合は、これを末尾に追加します。たとえば、decode(id,'1','100','4','400','999')id '1' または '4' ではないものを設定します (ただし、where ステートメントで '999' に除外されませんでした)。

さまざまな値が多数ある場合は、参照データ テーブルを作成し、このテーブルからの選択を update ステートメント内のサブクエリとして実行することをお勧めします。

于 2013-10-24T12:10:26.663 に答える