我想知道,有没有办法让一对一的左外连接:
我需要一个匹配表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
提前致谢!
答案 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,那么你仍然会得到你想要的记录。