2016-09-22 21 views
0

すべてのNULL値を持つ列を含む行を削除するにはどうすればよいですか?複数の列からNULL値を削除する

表の例:

CustID DOB  Order1 Order2 Order3 Order4 
    1  xxx  NULL NULL NULL  NULL 
    2  xxx  25  32  27  5 
    3  xxx  NULL  6  NULL  3 
    4  xxx  1  NULL  NULL  NULL 
    5  xxx  NULL NULL  NULL  NULL 

Iは4オーダー列のいずれかの値を使って何が保たれるべきCUSTID 1および5のための行を削除したいです。

私はwhereステートメントでこれを達成できますか?

+0

ここで、order1 = null、order2 = nullと... – Andy

+1

実際の問題は、テーブルデザインを正規化する必要があることです。 –

答えて

0

あなたはこのような何かを行うことができ:、個別NULLに対して各フィールドを確認ANDで結果を要約:

DELETE FROM 
    'your_table' 
WHERE 
    'order1 IS NULL 
    AND 'order2' IS NULL 
    AND 'order3' IS NULL 
    AND 'order4' IS NULL 
    AND 'order5' IS NULL 
0

さて、あなたは常に直接的なアプローチを使用することができます。 IS NULL比較演算子、またはISNULL()式のいずれかを使用することを忘れないでください。 =を使用してNULLに値を比較することは常にfalse得られます。代替はCOALESCEは、リスト内の最初の非NULL値を返す関数、またはNULLを使用することでしょう

DELETE FROM Customers 
WHERE Order1 IS NULL 
    AND Order2 IS NULL... 

全く非NULLがない場合値

DELETE FROM Customers 
WHERE COALESCE(Order1, Order2, Order3, Order4) IS NULL 

一番下の行は、しかし、あなたはおそらく関係を再編成する上でいくつかの時間を費やして、あなたのCustomersテーブルの構造考え直す必要があるかもしれないということです注文と顧客の間のヒップ。 1つの可能な解決策は、CustomerIdをOrderエンティティに追加することです。

0

選択句(クエリの「WHERE」部分)にヌルチェックを指定します。

DELETE FROM my_table 
WHERE order1 is null 
    AND order2 is null 
    AND order3 is null 
    AND order4 is null 
関連する問題