连接表而不获取不匹配的记录

时间:2013-07-09 03:57:44

标签: mysql sql oracle db2

我有以下两个表(一个和两个),需要输出,如第三个表。

ONE  

ID    TAG
1     A
2     B
3     c

TWO

ID TAG
1  A
2  Z  

OUTPUT  

ID  TAG  
1   A  
3   C

条件 -
1.需要'TAG'匹配的值 2.需要'ONE'中的值,这些值在'TWO'表中不可用 3.不需要'TAG'不匹配的值

这可以在单个SQL查询中完成吗?

2 个答案:

答案 0 :(得分:1)

LEFT JOIN保留第一个表中不匹配的结果:

SELECT one.id AS id, one.tag AS tag
FROM   one LEFT JOIN two ON one.id = two.id
WHERE  one.tag = two.tag OR two.tag IS NULL;

第一个条件one.tag = two.tag获得匹配结果;第二个two.tag IS NULL获取表one但不是two中可用的内容。

结帐demo here。如果有效,请告诉我。

答案 1 :(得分:0)

select a.ID, a.TAG
from ONE a LEFT OUTER JOIN TWO b
ON (a.ID = b.ID
and a.TAG = b.TAG)