我有以下两个表(一个和两个),需要输出,如第三个表。
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查询中完成吗?
答案 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)