0

私は2つのテーブルを完全に結合しています。テーブル 1 (LEAD) には 689,189 行があり、テーブル 2 (CONTACT) には 133,318 行があり、それらの完全外部結合は 738,959 行を返します。これまでのところ、これは理にかなっています。

各テーブルには、レコードが論理的に削除されているかどうかを示すフィールドがあり、Y値はそれを意味します。に等しくない値を持つ両方のテーブルの行のみを返したいですY。追加の条件をクエリに追加すると

select COUNT(*)
from LEAD l
full join CONTACT c on l.CONVERTEDCONTACTID = c.ID and l.DELETE_FLAG <> 'Y' and c.DELETE_FLAG <> 'Y'

それらがない場合よりも多くの行が返されます。クエリをより制限的にするべきではありませんか? サブクエリを使用して結合を実行できることはわかっていますが、この結果にどのように到達するのか理解できません。

4

2 に答える 2

0

次のように、追加の基準を WHERE 句に入れるだけです。

select COUNT(*)
    from LEAD l
    full join CONTACT c on l.CONVERTEDCONTACTID = c.ID 
    where  l.DELETE_FLAG <> 'Y' and c.DELETE_FLAG <> 'Y'

テーブルに NULL 値が含まれている場合は、次のように調整します。

select COUNT(*) 
     from LEAD l 
     full join CONTACT c on l.CONVERTEDCONTACTID = c.ID 
     where  (l.DELETE_FLAG <> 'Y' or l.DELETE_FLAG is NULL) and 
     (c.DELETE_FLAG <> 'Y' or c.DELETE_FLAG is NULL)
于 2014-06-12T06:04:17.617 に答える