-1

我有两张表,分别是 account_numbers 的 A 和 B。B 是 A 的子集。如何连接这两个表,以便在输出表中添加一个附加字段,其中公共元素(此处为 account_numbers)标记为 1,其余为 0

Table A
Account_Number
11
13
15
16
17
20

Table B
Account_Number
13
16
20

Output Table    
Account Flag
11  0
13  1
15  0
16  1
17  0
20  1
4

3 回答 3

3

我认为解决此问题的最佳方法是使用left outer join

select a.account_number,
       (case when b.account_number is null then 0 else 1 end) as flag
from A left outer join
     B
     on A.account_number = b.account_number;
于 2013-07-23T23:56:12.540 回答
2

尝试使用外连接而不是 group by 和 union all,它的性能会更好,尤其是对于大型表。

select a.account_number
  , case 
      when b.account_number is not null then 1
      else 0
    end as flag
from a, b
where a.account_number *= b.account_number
于 2013-07-24T00:02:02.620 回答
1
SELECT account_number, COUNT(*)-1 AS flag
FROM (
  SELECT account_number FROM A
    UNION ALL
  SELECT account_number FROM B
) AB
GROUP BY account_number;

查看此演示。让我知道它是否有效。

于 2013-07-23T23:47:28.220 回答