2012-04-10 3 views
3

私は2つのテーブルを持っています(TABLE1 & TABLE2)。私は、以下のクエリを実行したいと思います:SQL:関係演算子にNULL値を考慮させる方法

UPDATE TABLE1 a,TABLE1 b 
SET a.desg=CASE WHEN b.attribute_id=74 THEN b.value ELSE a.desc END 
WHERE a.entity_id=b.entity_id; 

をしかし、私はNULLをとしてENTITY_IDでTABLE1に一部の行を持っています。
評価中にこれらは考慮されていません。WHERE a.entity_id=b.entity_id;

このWHERE句にはNULLも考慮する必要があります。

どうすればいいですか?前もって感謝します。

+0

おそらく、2つの参照のようなものを使用してみてください? – APC

+0

TABLE2のレコード数(または 'b'の別名)には、' entity_id'と 'attribute_id = 74'のヌルがありますか?私はそれが一つだと願っています! – APC

答えて

2

は `TABLE1`がタイプミスであると

WHERE IFNULL(a.entity_id, 0) = IFNULL(b.entity_id, 0); 
+1

もう一つの解決策は、NON NULL値の最初の出現を返す 'WHERE COALESCE(a.entity_id、0)= COALESCE(b.entity_id、0);です。 –

+0

これは簡単です。 Andrey ....ありがとうございました。 - 今日の – Uday

+0

このメソッドを使用するときに、実際にはentity_id = 0のエンティティがないことを確認してください。 –

5
UPDATE TABLE1 a, TABLE1 b 
SET a.desg = CASE WHEN b.attribute_id=74 THEN b.value ELSE a.desc END 
WHERE a.entity_id=b.entity_id OR (a.entity_id IS NULL AND b.entity_id IS NULL) 
+0

THanks levanlevi .... – Uday