2016-12-19 15 views
0

SQLクエリを作成しようとしています。フィールドエントリが条件を満たす場合にフィールドを読み取るとき、またはnullの場合は、その行の選択をスキップします。SQLクエリがNULLでない場合フィールド値を入力

SELECT a.name, b.age 
CASE 
    WHEN a.birthday = b.birthday THEN vlaue? 
    WHEN a.birthday != b.birthday THEN skip? 
    ELSE is null THEN null 
END AS birthday 

FROM information a, tracking b 

WHERE a.name = b.name 

だから、生年月日が一致する場合、名前と年齢を入力するか、またはnullであるが、誕生日が一致しない場合には、すべての名前と年齢を入力しないでしょうでしょう。

+2

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple -sql-query – Strawberry

+1

いくつかのサンプルデータと期待される出力は、仕様を明確にするのに役立ちますification。つまり、「その行の選択全体をスキップする」という意味ですか?その条件を満たす行は返されないはずですか?その行は結果セットから省略する必要がありますか?結果セットにいくつの列があるはずですか? – spencer7593

+1

null、 'a.birthday'または' b.birthday'のどちらにすることができますか? – Barmar

答えて

0

あなたはこの

SELECT a.name, b.age 
    CASE 
     WHEN a.birthday = b.birthday THEN 'value' 
     ELSE null 
    END AS birthday 

    FROM information a 
    INNER JOIN tracking b ON a.name = b.name 
    WHERE a.birthday != b.birthday 

のために使うべき

(あなたが明示的な使用の表記に参加する必要があります...もっとreadbleである)、またはあなたが使用することを一致しない場合にも必要な場合は

に参加左
SELECT a.name, b.age 
    CASE 
     WHEN a.birthday = b.birthday THEN 'value' 
     ELSE null 
    END AS birthday 

    FROM information a 
    LEFT JOIN tracking b ON a.name = b.name 
    WHERE a.birthday != b.birthday 
+1

これは、 'x!= y'のいずれかがnullのときにnullであるため、nullの場合もスキップします。 – Barmar

+0

ありがとうございます。参加は「スキップ」部分で行われています。私はラベルがありません|上にタイプし、どこにa.birthday = b.birthdayが必要ですか。私はケースを試しましたa.birthday = b.birthdayそれでは幸運のない誕生日。 – cw2

+0

私はそれを得て、インナーからレフトに変わったと思います。 – cw2

関連する問題