Sql 联接两个表并从第二个表中仅获取第一个匹配行
我想加入三张桌子。 第一个表(联系人)包含cid(主键)、名称。 第二个表(familyInfo)包含fid(主键)、cid(fk)、联系人姓名和关系ID(fk) .第三个表(关系类型)包含relationID(主键),relationType如父亲、母亲、兄弟等 查询应该将第一个表中的所有行与第二个表中的第一个匹配行连接起来。。。。没有任何关系的联系人应显示null…结果中只显示第一个匹配关系 请帮忙, 非常感谢。Sql 联接两个表并从第二个表中仅获取第一个匹配行,sql,sql-server,join,relational-database,left-join,Sql,Sql Server,Join,Relational Database,Left Join,我想加入三张桌子。 第一个表(联系人)包含cid(主键)、名称。 第二个表(familyInfo)包含fid(主键)、cid(fk)、联系人姓名和关系ID(fk) .第三个表(关系类型)包含relationID(主键),relationType如父亲、母亲、兄弟等 查询应该将第一个表中的所有行与第二个表中的第一个匹配行连接起来。。。。没有任何关系的联系人应显示null…结果中只显示第一个匹配关系 请帮忙, 非常感谢。 您需要使用外部应用 SELECT c.cid, c.NAME,
您需要使用
外部应用
SELECT c.cid,
c.NAME,
oa.contact_name
FROM contacts c
OUTER APPLY (SELECT TOP 1 f.contact_name
FROM familyInfo f
WHERE c.cid = f.cid
ORDER BY relationID) oa
它的工作原理
Outer apply
将返回左表中的所有记录,即使右表中没有找到匹配的记录
Top 1
和Order by
将帮助您从第二个表中找到第一个匹配行我们不会为您做功课。请发布您尝试过的内容,我们可以提供帮助。尽量不要将内容发布为图像。另外,请发布您迄今为止所做的尝试。谢谢您prdp…它按预期工作…非常感谢您