这道题目要求我们查询参加了特定培训课程的员工信息。下面是这个SQL查询的思路和实现步骤。

1. 确定总体问题

我们需要找出参加了course3课程的员工,并输出他们的员工ID和姓名,按员工ID升序排序。

2. 分析关键问题

  • 连接表:我们需要将staff_tbcultivate_tb表连接起来,以便获取每个员工的姓名和培训课程。
  • 过滤数据:只选择参加了course3课程的记录。
  • 排序输出:按员工ID升序排序。

3. 解决每个关键问题的代码及讲解

步骤1:连接表

我们使用JOINstaff_tbcultivate_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