TableA是具有1000行的超集,而TableB是具有500行的子集。两个表的结构与ID和Empno相同。写一个应该得到的SQL查询ID,Empno,flag(Y / N)如果表B中的行已经出现在TableA中,则显示Y其他标志显示N
表A
id emp
1 a
2 b
3 c
4 d
表B
id empno
1 a
2 b
3 f
4 g
结果集
id empno flag
1 a Y
2 b Y
3 f N
4 g N
select id, empno , ?case statement on id in table b as flag ??
from table b
答案 0 :(得分:0)
使用外部联接和检查NULL
select a.id, a.empno,
case when b.id is null then 'N' else 'Y' end as flag
from table_a a
left join table_b b on a.empno = b.empno;
如果table_b中存在table_a,则上面将显示你的每一行。
如果您只想要查看table_b中的行,您可以使用以下内容:
select id, empno,
case
when (select count(*) from table_a a where a.empno = b.empno) = 1
then 'Y'
else 'N'
end
from table_b b