如何用单SQL查询获取punches表去重user_id及对应user表name
解决方案
你可以通过**表连接(JOIN)**将两个表合并查询,一次性获取唯一的user_id和对应的name字段,以下是两种常用写法:
写法一:DISTINCT + INNER JOIN
SELECT DISTINCT p.user_id, u.name FROM punches p INNER JOIN user u ON p.user_id = u.user_id WHERE p.organisation_id = '$current_organisation_id';
写法二:GROUP BY + INNER JOIN
由于user表的user_id是主键,每个user_id对应唯一的name,也可以用GROUP BY来确保结果唯一:
SELECT p.user_id, u.name FROM punches p INNER JOIN user u ON p.user_id = u.user_id WHERE p.organisation_id = '$current_organisation_id' GROUP BY p.user_id, u.name;
补充说明
INNER JOIN仅返回在punches和user表中都存在匹配记录的用户,完全匹配你原本从punches表提取用户的需求;- 若需兼容
punches表有记录但user表无对应数据的极端场景(通常不会出现,因为user_id应为外键),可将INNER JOIN替换为LEFT JOIN。
内容的提问来源于stack exchange,提问作者cornacum
相关产品推荐
相关产品推荐

