如何编写SQL语句从profile表查询对应指定category_id的员工姓名?
解决方法:关联表查询员工姓名
嘿,这个需求其实用表关联或者子查询都能轻松实现,我给你分享两种常用的写法:
方法一:INNER JOIN(最常用的关联方式)
这是最直观的写法,通过关联profile和employee_belongs_to两张表,直接筛选出属于特定分类的员工姓名:
-- 替换其中的1为你需要的特定category_id SELECT p.name FROM profile p INNER JOIN employee_belongs_to ebt ON p.id = ebt.profile_id WHERE ebt.category_id = 1;
补充:如果需要同时显示分类名称
要是你还想看到对应的分类名称,可以再关联category表:
-- 假设category表的分类名字段是category_name,按需替换字段名 SELECT p.name, c.category_name FROM profile p INNER JOIN employee_belongs_to ebt ON p.id = ebt.profile_id INNER JOIN category c ON ebt.category_id = c.id WHERE c.id = 1; -- 也可以用WHERE c.category_name = 'English'来指定分类名称
方法二:子查询写法
如果更习惯用子查询的逻辑,也可以先从关联表里找出目标分类对应的所有员工ID,再去profile表中匹配姓名:
SELECT name FROM profile WHERE id IN ( SELECT profile_id FROM employee_belongs_to WHERE category_id = 1 );
小提示
记得根据你实际的表结构调整字段名哦,比如profile表的主键如果不是id、姓名字段不是name,要换成你数据库里的实际字段~
内容的提问来源于stack exchange,提问作者Bhagawat
相关产品推荐
相关产品推荐

