一对一左外联接

时间:2009-11-09 20:07:11

标签: sql oracle

我想知道,有没有办法让一对一的左外连接:

我需要一个匹配表A和表B的连接,对于表A上的每个记录,它必须在表B上搜索它的对,但是只存在一个匹配该条件的记录,所以当它找到它的对时B,它必须停止并继续在表A的下一行。

我所拥有的只是一个简单的LEFT OUTER JOIN。

select *  from A LEFT OUTER JOIN B ON A.ID = B.ID ORDER BY (NAME) ASC

提前致谢!

2 个答案:

答案 0 :(得分:3)

您在问题中提供的语法是正确的。加入一对一关系的查询与一对多关系的查询没有区别。

答案 1 :(得分:1)

SQL无法以这种方式工作。首先,它不是逐行查看事物。第二个是什么定义了你想要匹配的记录?

假设您并不真正关心选择哪一行,这样的事情可能会起作用:

SELECT * 
From tableA
left outer join 
(select b.* from tableb b1
join (Select min(Id) from tableb group by id) b2 on b1.id - b2.id) b
on a.id = b.id

如果有多个记录在表b中有id,那么你仍然会得到你想要的记录。