テーブルBが "USING" column_1と結合されたテーブルAがあります。私は私が使用してみました、クエリがCOLUMN_2の値がNOT EQUAL演算子を使用するとNULLを処理する
だから表BにCOLUMN_2、column_3又は接合された行のcolumn_4における任意の値と等しくない、表Aのすべての行を表示したい:
WHERE
A.column_2 <> B.column_2 AND
A.column_2 <> B.column_3 AND
A.column_2 <> B.column_4
B.column_2、B.column_3、およびB.column_4のすべてのセルに値があると、クエリのチェックが機能し、A.column_2の値にnoが含まれている表Aのすべての行がリストされますテーブルB内の一部のセルにNULL値がある場合、問題が発生します。結果は返されません。
23 <> NULL
...そしてクエリがチェックのすべてがTRUEを返す例を探しているので、何も返さない:これは、MySQLは、以下がFALSEであると考えているためであると考えられます。
IFNULLの値が0のIFNULLで囲まれたテーブルBの列を配置することによって回避した回避策は次のとおりです。本来、NULLセルを0に変換するため、NOT EQUALチェック一致するものがなく、表Aの行が表示された場合はTRUEを正しく返します。コードは次のようになります。
WHERE
A.column_2 <> IFNULL(B.column_2, 0) AND
A.column_2 <> IFNULL(B.column_3, 0) AND
A.column_2 <> IFNULL(B.column_4, 0)
これは、これを処理するための丸ごとの方法であるようです。これを処理するより良い方法はありますか?
を使用すると、COALESCE関数 –
@JordanのIFNULLを使用することができます(ただ、)(ほとんどCOALESCEと同じです1値に制限されています。 – Shadow