0

テーブル A には存在するが、テーブル B には存在しない項目を見つける必要があります。これは、MySQL でこのような結合を行うことで非常に簡単になります。

select * from A 
left join B on A.key=B.key 
where B.key is null

ただし、何らかの理由で、これは MSSQL では機能しません。すべての結果を表示するために where 句を使用せずにクエリを作成しましたが、null 値ではなく一致のみが表示されます。なぜこれが機能しないのか分かりますか?

代わりに「存在しない場合」を使用できることは知っていますが、結合が機能しない理由を知りたいです。

レビュー用にコードを追加しています

select Absences.CustomerID, b.* 
from (
    select * from openquery(JUAN_INTERFACE,'select cmp_wwn from Planet_Customers where   i_outcome =4')) b 
left join Absences on Absences.CustomerID = b.cmp_wwn 
where Absences.Type = 3223
4

1 に答える 1

0

あなたのwhere句はnull値を除外しています:

where Absences.Type = 3223

openqueryサブクエリからAbsences;への左結合です。次に、列に特定の (null 以外の) 値を持つ行のみをフィルタリングしAbsencesます。

逆に から に参加するつもりだっAbsensesたのopenqueryですか?

于 2013-06-21T00:32:57.333 に答える