这道题目要求我们查询参加了特定培训课程的员工信息。下面是这个SQL查询的思路和实现步骤。
1. 确定总体问题
我们需要找出参加了course3
课程的员工,并输出他们的员工ID和姓名,按员工ID升序排序。
2. 分析关键问题
- 连接表:我们需要将
staff_tb
和cultivate_tb
表连接起来,以便获取每个员工的姓名和培训课程。 - 过滤数据:只选择参加了
course3
课程的记录。 - 排序输出:按员工ID升序排序。
3. 解决每个关键问题的代码及讲解
步骤1:连接表
我们使用JOIN
将staff_tb
和cultivate_tb
表连接起来:
from
staff_tb st
join
cultivate_tb ct on st.staff_id = ct.staff_id
ON st.staff_id = ct.staff_id
:通过员工ID进行连接,来获得每一位员工及其参加的课程。
步骤2:过滤数据
我们使用WHERE
子句和FIND_IN_SET
函数来过滤出参加了course3
课程的记录:
where
find_in_set('course3', ct.course) > 0
FIND_IN_SET('course3', ct.course) > 0
:检查course3
是否在course
字段中。FIND_IN_SET
函数返回值大于0表示course3
存在于课程列表中。
步骤3:排序输出
我们使用ORDER BY
按员工ID升序排序输出结果:
order by
ct.staff_id asc
完整代码
select
ct.staff_id,
st.staff_name
from
staff_tb st
join
cultivate_tb ct on st.staff_id = ct.staff_id
where
find_in_set('course3', ct.course) > 0
order by
ct.staff_id asc