2017-06-23 3 views
0

表2の値がない場合、私はそれからない、表2nullテストでpostgresテーブルを更新するには?

enter image description here

から値

enter image description here

、表1に名前と説明を更新する必要があります表1の名前または説明をヌルで上書きします。私は2つのリクエストをして、それらを最適化するのを助けてくれるよう依頼します。

更新要求:

UPDATE final 
SET 
    name  = product_info.name 
FROM product_info 
WHERE final.xml_id = product_info.xml_id 
     AND product_info.name NOTNULL; 

UPDATE final 
SET 
    description  = product_info.description 
FROM product_info 
WHERE final.xml_id = product_info.xml_id 
     AND product_info.description NOTNULL; 
+0

と義和? –

答えて

1

あなたは、単一のクエリでこれを行うことができます。

クエリの問題TIS
UPDATE final f 
    SET name = COALESCE(pi.name, f.name), 
     description = COALESCE(pi.description, f.description) 
FROM product_info pi 
WHERE f.xml_id = pi.xml_id AND 
     (pi.name IS NOT NULL OR pi.description IS NOT NULL); 
+0

動作しませんでした。上書きされた値の名前=(( ) "and"構造体が表1の2つの値を上書きします。値がnullでない場合 https://gyazo.com/dd7a507a3f7cbfba582882438442a841 – Miksser

+0

@Miksser。 'name'と' description'に 'product_info'の値を' NULL 'でないときはいつでも割り当てるでしょう。これはあなたのクエリと同じロジックですが、おそらく "empty"または "NULL"の値はあなたのデータは実際には文字列です –

+0

どこでもnullがありましたが、あなたのスクリプトはAND (Pi.name IS NOT NULLまたはpi.description IS NOT NULL)を削除した後でも稼いでいます; ありがとう^^ – Miksser

関連する問題