2016-04-16 15 views
1

私は主キーIMOで2つのテーブルをマージするmysqlクエリをしています。クエリは正常に動作しますが、重複キーの更新では、wp_secondテーブルの値を持たないフィールドのみを更新したいという問題があります。重複キーのみ更新NULLまたは空の値

つまり、重複キーでは... wp_second値は、NULLまたは空の場合にのみ更新する必要があります。ここ

は、私がこれまで

INSERT INTO wp_second (imo, GEARTYPE, vname, flag) SELECT imo_number, vessel_type, vessel_name, flag FROM wp_first 
ON DUPLICATE KEY UPDATE 
wp_second.GEARTYPE=wp_first.vessel_type, 
wp_second.flag=wp_first.flag, 
wp_second.vname=wp_first.vessel_name 

答えて

2

が合体

ON DUPLICATE KEY UPDATE 
    wp_second.GEARTYPE= COALESCE(wp_first.vessel_type, wp_second.GEARTYPE), 
    wp_second.flag= COALESCE(wp_first.flag, wp_second.flag), 
    wp_second.vname= COALESCE(wp_first.vessel_name, wp_second.vname) 

でこれを試してみてくださいましたクエリのですか?あなたがnullの場合には値になります

+0

nullの場合フィールドをwp_first値で更新したい場合はNULLを指定します。空でない場合は無視します。 –

+0

はいCOALESCE()は、引数から最初の非NULL値を返します。 –

+0

私の編集された答えを見てください –

関連する問題