MYSQL如何实现仅当关联用户表存在记录时返回公司数据,是否可通过JOIN实现
MySQL关联查询需求实现方案
这个需求完全可以通过JOIN实现,使用INNER JOIN(内连接)即可天然满足「仅返回存在关联用户的公司」的要求。
现有表结构
user表:包含id、compId两个字段,样例数据:id=1对应compId=comp1、id=2对应compId=comp1Company表:包含id、name两个字段,样例数据:id=comp1对应name=coke、id=comp2对应name=pepsi
实现SQL
直接使用内连接关联两张表,关联条件为公司ID匹配,后续需要追加的Company表过滤条件直接在WHERE子句后添加即可:
SELECT c.* FROM Company c INNER JOIN `user` u ON c.id = u.compId WHERE c.id = '你要传入的公司ID' -- 此处可直接追加其他Company表的过滤条件,例如 AND c.status = 1 GROUP BY c.id;
注:user是MySQL保留关键字,所以用反引号包裹避免语法错误;加GROUP BY c.id是为了避免一个公司关联多个用户时返回重复的公司记录
效果验证
- 当传入公司ID为
comp1时,user表存在关联的用户记录,查询返回公司coke的对应记录 - 当传入公司ID为
comp2时,user表没有匹配的关联用户,内连接无匹配结果,查询无返回
内容的提问来源于stack exchange,提问作者dreambigcoder
相关产品推荐
相关产品推荐

