2015-10-09 25 views
1

我有查詢Inner JoinINNER JOIN的對面

查詢1

select * 
    from vehicle_models vmodel 
    Inner join ogpo_voilure_model md on md.Name = vmodel.VEHICLE_MODEL 

現在,我需要的是不存在這些ID數據。用另一個字 - Inner JOIN

我試圖做出我需要的查詢,但不成功。

查詢2

Select top 500 * 
from ogpo_voilure_model md 
Where md.id not in 
(
select md.id 
    from Novelty.dbo.vehicle_models vmodel 
    Inner join [ogpo_voilure_model] md on md.Name = vmodel.VEHICLE_MODEL 
) 

我發現StakOverflow答案像this(sixth example)。但我的領域不是NULL

我該如何實現它?

+0

與INNER相反的是......驚喜...... OUTER。試試看。 – flowit

+1

@flowit:外連接的結果將是內連接的超集,而不是補集。 –

+0

@flowit,你不明白這個問題。 –

回答

0

內加入意味着你想要的一切是在配置表vehicle_models,但也得到了一個或多個相關行ogpo_voilure_model

如果定義oposite把它作爲一切都在vehicle_models但不要「T得到了在ogpo_voilure_model

所有你需要相關的是:

select * 
    from [Novelty].[dbo].[vehicle_models] vmodel 
    Where vmodel.VEHICLE_MODEL not in 
    (
     select md.Name 
     from [Novelty].[dbo].[ogpo_voilure_model] md 
    ) 

並且遵循該定義即使結果返回零行也是正確的。 如果這不是正確的答案,您必須首先定義內連接的相反意義。例如,你可能想交換表。

0

你是什麼意思「我的領域不是NULL」?

您在問題中給出的link有一個答案:FULL JOIN

SELECT * 
FROM 
    vehicle_models vmodel 
    FULL JOIN ogpo_voilure_model md on md.Name = vmodel.VEHICLE_MODEL 
WHERE 
    md.Name IS NULL 
    OR vmodel.VEHICLE_MODEL IS NULL 
; 

這將從vehicle_modelsogpo_voilure_model沒有那些普通車輛型號名稱返回行。

如果您可以在問題和預期結果中添加少量示例行,這將有所幫助。