如何合并两个SQL查询,在单表展示含继承关系的请求数据
合并后的SQL查询方案
合并后的查询语句
SELECT r.request_number AS 请求编号, assignee_u.first_name AS 经办人, submitter_u.first_name AS 提交人 FROM requests r -- 关联提交人信息 JOIN submitter s ON r.submitter_id = s.id JOIN users submitter_u ON s.id = submitter_u.id -- 关联经办人信息(多对多通过中间表) JOIN request_assignee ra ON r.id = ra.request_id JOIN assignee a ON ra.assignee_id = a.id JOIN users assignee_u ON a.id = assignee_u.id;
逻辑说明
- 以
requests表作为主表,先通过submitter_id关联submitter表,再关联users表获取提交人姓名,这部分保留了原第二个查询的核心逻辑,同时移除了原查询中冗余的request_assignee关联(提交人与请求的关联不需要通过该中间表)。 - 接着通过
request_assignee中间表关联assignee表,再关联users表获取经办人姓名,对应原第一个查询的逻辑。 - 由于请求与经办人是多对多关系,每个经办人会和对应的请求、提交人生成一条独立记录,满足“一个请求可对应多个经办人”的展示需求。
原查询的冗余修正
原第二个查询中额外关联了request_assignee表,这会导致无意义的数据重复,合并时已删除该冗余关联。
内容的提问来源于stack exchange,提问作者Altaf
相关产品推荐
相关产品推荐

