データベース「not in」に遭遇したピット


問題のシーン
簡単なSQLを書いて二つの表を統合しますが、二つの表の同じ部分を排除しなければなりません。したがって、not inを使用して排除するが、効果は達成されていない。
問題SQL
Insert into A_TABLE (iId,iAreaId,sAreaCode,sProvinceName,sCityName,sTelAreaCode)
(select A.iId,A.iAreaId,A.sAreaCode,A.sProvinceName,A.sCityName,A.sTelAreaCode
from B_TABLE  A
where A.iId   not in (
    select  C.iId from A_TABLE B left join B_TABLE C 
    on B.iAreaId=C.iAreaId and B.sAreaCode=C.sAreaCode and B.sProvinceName=C.sProvinceName and B.sCityName=C.sCityName and B.sTelAreaCode=C.sTelAreaCode 
) )
問題の原因
資料を探して、最後にデータベースの博文の中で見て、not inの後のデータはnullが存在することができないと言って、さもなくば空に帰ることができます。試してみましたが、本当にできるとは思いませんでした。
問題改善SQL
Insert into A_TABLE (iId,iAreaId,sAreaCode,sProvinceName,sCityName,sTelAreaCode)
(select A.iId,A.iAreaId,A.sAreaCode,A.sProvinceName,A.sCityName,A.sTelAreaCode
from B_TABLE  A
where A.iId   not in (
    select  C.iId from A_TABLE B left join B_TABLE C 
    on B.iAreaId=C.iAreaId and B.sAreaCode=C.sAreaCode and B.sProvinceName=C.sProvinceName and B.sCityName=C.sCityName and B.sTelAreaCode=C.sTelAreaCode 
    where C.iId is not null
) )
問題の結果
首尾よく解決する
問題思考inまたはnot inを使用する場合は、空の値を除去することを考慮する。