如何通过注意匹配和不匹配来连接表

时间:2013-05-03 21:55:38

标签: sql

我有2个输入sql表,如下所示

表A

  Col1 Col2
  X     Y     
  R     S     
  Z     W     

表B

   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中实现这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用带有LEFT JOIN表达式的CASE来生成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

答案 1 :(得分: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

答案 2 :(得分: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

但是,您想要的结果似乎不正确(表B中的X + Z不是X + R)

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