2015-03-31 114 views
0

我有兩個表考慮TBL1和TBL2如何檢查具有相同行值的表即使行不匹配?

tbl1 

    Site 
    --------- 
    101 - Hold 
    102 - test 

    tbl2 

    Site 
    --------- 
    101 - Hold 
    104 - wel 
    102 - test 

我要檢查tbl2的數據存在於TBL 1。如果是,則選擇語句必須返回'是',否則'否'...

EXample 
If tbl2 is not having "102-test" then also i have to return 'No' 

我該如何實現這一點。

+1

使用左側加入! – 2015-03-31 14:44:52

+0

你可以請檢查我的更新問題 – 2015-03-31 14:48:58

+0

你想要一個返回值 - 「是」還是「否」 - 整個表格?或者每行返回一個值? – 2015-03-31 14:50:02

回答

0

您通過查找不匹配,並使用這些信息做到這一點:

select (case when count(*) = 0 then 'Yes' else 'No' end) 
from tbl2 t2 
where not exists (select 1 from tbl1 where t1.site = t2.site); 

count(*)保證返回的具體哪一行,含yesno

0
SELECT 
CASE EXISTS(SELECT Id FROM tbl2 WHERE Id IN (SELECT Id FROM tbl1)) 
     THEN 'Yes' 
     ELSE 'No' 
END  
0

檢查是否在tbl1存在tbl2數據並返回回site與值要麼YesNo當存在於tbl1或不tbl2

沒有必要使用任何聚合,你有關於所有tbl1網站的信息 - 這是你想達到的(根據你的問題)。

SELECT 
    a.site, CASE WHEN b.site IS NOT NULL THEN 'Yes' ELSE 'No END AS value_exists 
FROM 
    tbl1 a 
    LEFT JOIN tbl2 b ON 
     a.site = b.site 

如果您有tbl1重複的值,那麼你可能需要考慮增加DISTINCTGROUP BY條款。

相關問題