2013-05-03 62 views
-1

聯接表我有2個輸入的SQL表如下所示如何通過注意匹配和錯配

表阿

Col1 Col2 
    X  Y  
    R  S  
    Z  W  

表乙

Col1 Col2 
    X  Y  
    Z  W 
    A  Z  

我怎樣才能通過連接兩個表在表A中增加一個0或1的列。

預期的最終表將是。

Col1 Col2  Code 
    X  Y   1 
    R  S   1 
    Z  W   0 

,我需要選擇從表1中的所有記錄,並且需要在表2中添加一個列COL1值的存在爲1或0。我怎樣才能在SQL實現這一點?

+0

會發生什麼行'一個Z'? – 2013-05-03 21:58:03

+0

這是左外連接。 – Manish 2013-05-03 21:58:21

+0

顯示該代碼? – Jesse 2013-05-04 17:46:09

回答

2

您可以使用LEFT JOINCASE表達式生成Code柱:

select a.fname, 
    a.lname, 
    case 
    when b.fname is null 
     and b.lname is null 
    then 0 
    else 1 end Code 
from a 
left join b 
    on a.fname = b.fname 
    and a.lname = b.lname 

SQL Fiddle with Demo

2

您應該能夠與OUTER JOIN

SELECT 
    t1.fname, 
    t1.lname, 
    CASE WHEN t2.fname IS NULL THEN 0 ELSE 1 END as code 
FROM 
    t1 
    LEFT OUTER JOIN t2 
    ON t1.fname = t2.fname 
     AND t1.lname = t2.lname 
1

你做到這一點可以使用CASEEXISTS

SELECT fname, 
     lname, 
     Code = CASE 
       WHEN EXISTS(SELECT 1 
          FROM dbo.B 
          WHERE b.fname = a.fname) THEN 1 
       ELSE 0 
       END 
FROM dbo.A 

DEMO

但是,您期望的結果似乎是不正確的(X + Z表B不是X + R)

FNAME LNAME CODE 
X   Y  1 
R   S  0 
Z   W  1