如何通过三对关联字段在SQL中连接两张数据表
实现借款人及两位居住人姓名的SQL连接查询
要获取包含借款人、两位居住人姓名的结果表,你需要多次关联Persons表——因为Loans里的Borrower_Id、resident1_id、resident2_id都对应Persons的Person_Id字段,每次关联给Persons表起不同的别名来区分角色。
核心SQL语句
SELECT -- 借款人姓名 p_borrower.First_name AS Borrower_FirstName, p_borrower.Last_name AS Borrower_LastName, -- 第一位居住人姓名 p_res1.First_name AS Resident1_FirstName, p_res1.Last_name AS Resident1_LastName, -- 第二位居住人姓名 p_res2.First_name AS Resident2_FirstName, p_res2.Last_name AS Resident2_LastName FROM Loans -- 关联借款人信息 INNER JOIN Persons p_borrower ON Loans.Borrower_Id = p_borrower.Person_Id -- 关联第一位居住人(用LEFT JOIN避免无居住人时丢失贷款记录) LEFT JOIN Persons p_res1 ON Loans.resident1_id = p_res1.Person_Id -- 关联第二位居住人(同理用LEFT JOIN兼容空值场景) LEFT JOIN Persons p_res2 ON Loans.resident2_id = p_res2.Person_Id;
关键说明
- 用别名(
p_borrower、p_res1、p_res2)区分重复关联的Persons表,避免字段名冲突。 - 如果存在
resident1_id或resident2_id为空的情况,LEFT JOIN会保留贷款记录,对应空值字段显示为NULL;若确认所有居住人ID都存在,可替换为INNER JOIN。 - 可按需在
SELECT中添加Loans表的其他字段(如贷款编号、金额等)。
内容的提问来源于stack exchange,提问作者Lukasz Babel
相关产品推荐
相关产品推荐

