采用以下两个示例表:
Table A
Name FirstOrLast
Jeremy First
Smith Last
Mark First
David First
Table B
Name
Jeremy
Smith
Mark
David
Jones
Jack
我希望输出为:只输出名字,但如果表A不记录它是名字还是姓,那么无论如何输出它。正确的输出是:
Jeremy
Mark
David
Jones
Jack
我尝试使用外部联接完成此操作,如下所示:
select
B.Name
from
A, B
where
A.name = B.name(+) and
A.FirstOrLast = 'First';
但没有运气。我怎么能这样做?
答案 0 :(得分:4)
执行左外连接且A
中没有记录时,a.firstOrLast
将为空。当你处于它的时候,你也可以切换到连接的标准语法:
select
B.Name
from
B
left outer join A on A.name = B.name
where
A.firstOrLast is null or A.firstOrLast = 'First';
但是,旧语法也应该有效:
select
B.Name
from
A, B
where
A.name = B.name(+) and
(A.firstOrLast is null or A.firstOrLast = 'First');
答案 1 :(得分:2)
试试这个:
SELECT B.Name
FROM B LEFT JOIN A ON B.Name = A.Name
WHERE A.FirstOrLast = 'First' OR A.Name IS NULL;
答案 2 :(得分:0)
select b.name
from b
union
select a.namfe
from a
where a.firstOrLast = 'First'
答案 3 :(得分:0)
SELECT Name
FROM B
MINUS
SELECT Name
FROM A
WHERE FirstOrLast <> 'First'