-1

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

4

3 回答 3

2

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

于 2013-05-03T21:59:20.580 回答
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
于 2013-05-03T21:59:29.820 回答
1

您可以CASE使用EXISTS

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 

演示

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

FNAME   LNAME   CODE
X         Y      1
R         S      0
Z         W      1
于 2013-05-03T22:04:25.407 回答