多表关联查询求助:关联A、B表并基于C表分组展示用户与组
解决方案
可以通过INNER JOIN关联三个表实现需求,INNER JOIN会自动过滤掉仅在单表存在的记录,只保留三方匹配的结果。
假设表A的用户ID字段为userId(对应表C的userId),表B的组ID字段为groupId(对应表C的groupId),执行以下SQL语句即可:
SELECT a.user, b.group FROM C INNER JOIN A ON C.userId = A.userId INNER JOIN B ON C.groupId = B.groupId;
补充说明:
- 如果表A/B的主键字段和表C的关联字段名称不一致,只需修改
ON条件中的字段名即可 - 若表C存在重复的用户-组关联记录,可通过
DISTINCT或GROUP BY去重:- 使用DISTINCT:
SELECT DISTINCT a.user, b.group FROM C INNER JOIN A ON C.userId = A.userId INNER JOIN B ON C.groupId = B.groupId; - 使用GROUP BY:
SELECT a.user, b.group FROM C INNER JOIN A ON C.userId = A.userId INNER JOIN B ON C.groupId = B.groupId GROUP BY a.user, b.group;
- 使用DISTINCT:
内容的提问来源于stack exchange,提问作者user3720142
相关产品推荐
相关产品推荐

