サブクエリでNULL
のフィルタが機能しないのはなぜですか? は、私には、例えば、許可された値のリストにNULL
を追加することによって、正しい結果を得ることを望んだ:リスト内のNULLのフィルタ
SELECT ERP_ServiceProcess.fiStatusNew, RMA.IdRMA
FROM ERP_ServiceProcess RIGHT OUTER JOIN
RMA ON ERP_ServiceProcess.fiRMA = RMA.IdRMA
WHERE (ERP_ServiceProcess.fiStatusNew IN (NULL, 1, 7, 8))
order by ERP_ServiceProcess.fiStatusNew
これは間違った結果を与えるために、サブテーブルERP_ServiceProcessにレコードを持っていないRMA内のすべてのレコード(ERP_ServiceProcess .fiStatusNew IS NULL
)が削除されます。
私は、正しい結果を得るために(遅い)クエリを、これを使用する必要があります。
SELECT ERP_ServiceProcess.fiStatusNew, RMA.IdRMA
FROM ERP_ServiceProcess RIGHT OUTER JOIN
RMA ON ERP_ServiceProcess.fiRMA = RMA.IdRMA
WHERE (ERP_ServiceProcess.fiStatusNew IS NULL)
OR (ERP_ServiceProcess.fiStatusNew IN (1, 7, 8))
order by ERP_ServiceProcess.fiStatusNew
私はRIGHT OUTER JOIN
を使用して、私はサブクエリにNULL
を追加しましたが、第二、遅いクエリを使用しなければならないのはなぜ?
ありがとうございます。
あなたは 'SET ANSI_NULLS on'のとあなたの最初のクエリを試してみましたか? –
@Adriy M:そうです。それは "間違った"結果を返す(NULLを落とした)。 –
@Tim:もしかして、それがANSI_NULLS設定のNULL値を持つ関わらず行を省略しますか?それは価値がないことである、チェックする値ではないので、 –