SQL Server查询与Excel VLookup具有相同的功能

sla*_*oah 3 sql sql-server excel vlookup data-comparison

我有两列数据需要相互比较 - 列A和列B.

A栏:

Steve
Jane
Mary
Peter
Ed
Scott
Ted
Run Code Online (Sandbox Code Playgroud)

B栏:

Peter
Scott
David
Nancy
Run Code Online (Sandbox Code Playgroud)
  • A列的数据量大于B列.
  • 但它可能没有列B中的所有值.

我需要找出B列中的哪些值也在A列中.

上述样本数据的预期输出:

Peter   TRUE
Scott   TRUE
David   FALSE
Nancy   FALSE
Run Code Online (Sandbox Code Playgroud)
  • 需要使用SQL Server/T-SQL来获取此输出.
  • A列和B列是2个单独表格中的字段
  • 2个表中没有其他列

感谢你的帮助!

Exa*_*Box 10

select 
   b.columnb,
   case when a.columna is null then 'FALSE' else 'TRUE' end 

from
   tableb b left outer join
   tablea a on b.columnb = a.columna
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 5

左联接的问题是表A中可能有重复项。

如果这是一个问题,则可以执行以下操作:

select b.col, (case when a.val is NULL then 'FALSE' else 'TRUE' end)
from b left outer join
     (select distinct a.val
      from a
     ) a
     on b.col = a.val;
Run Code Online (Sandbox Code Playgroud)

表达这一点的另一种方法是使用相关子查询。这将所有逻辑放在select

select b.col,
       (case when exists (select 1 from a where a.val = b.col)
             then 'TRUE'
             else 'FALSE'
       end)
from b
Run Code Online (Sandbox Code Playgroud)