4

ある列がnullの場合、その列もnullでない場合にのみ、別の列の値で更新しようとしています。null の場合、列 1 を列 3 で更新します。

次に例を示します。

day_phone sec_phone alt_phone cell_phone
555-555-1212 ヌル ヌル ヌル
空 555-555-1234 空 空
NULL NULL 555-555-4321 NULL
ヌル ヌル ヌル 555-555-5678
無 555-123-4567 555-867-5309 無

したがって、私が達成したいのは、すべてのレコードを更新して、day_phone が結果になるようにすることです。複数の列にレコードがある場合は、できれば最初に見つかった結果になります。最終結果は次のようになります。

day_phone sec_phone alt_phone cell_phone
555-555-1212 ヌル ヌル ヌル
555-555-1234 555-555-1234 ヌル ヌル
555-555-4321 空欄 555-555-4321 空欄
555-555-5678 空車 空車 555-555-5678
555-123-4567 555-123-4567 555-867-5309 ヌル
4

2 に答える 2

6

単に使用するCOALESCE

UPDATE  tableName
SET     day_phone = COALESCE(day_phone, sec_phone, alt_phone, cell_phone)

null の場合にのみ更新する場合day_phoneは、条件を追加できます。

UPDATE  tableName
SET     day_phone = COALESCE(sec_phone, alt_phone, cell_phone)
WHERE   day_phone IS NULL

これにより、選択された行のみが更新されるため、更新がより高速になります。column にインデックスがある場合は、はるかに高速ですday_phone

于 2013-04-24T13:35:05.097 に答える
0

最も簡単な方法は、一連の update ステートメントです。

UPDATE table_name
SET column1=column2
WHERE column1 IS NULL
AND column2 IS NOT NULL

列 3、4 などで繰り返します。優先順に実行します。

http://www.w3schools.com/sql/sql_null_values.asp

http://www.w3schools.com/sql/sql_update.asp

于 2013-04-24T13:39:41.530 に答える