【问题标题】:how to find out employees who have the required skills using mysql如何使用 mysql 找出具备所需技能的员工
【发布时间】:2018-04-17 19:55:21
【问题描述】:

我有一个 MySQL 表 Employee,它有两列:

empl_no   skill
========= =========================
1001      Java
1001      Python
1002      JavaScript
1003      C#
1003      Excel Macro
1001      C

如何使用 SQL Select 语句过滤出具有所有列出的技能“Java”、“Python”、“C”的员工?

【问题讨论】:

标签: mysql sql


【解决方案1】:

您可以使用 in 子句并拥有

select empl_no
from my_table 
where skill in ( 'Java', 'Python', 'C' )
group by empl_no
having count(distinct skill) = 3

【讨论】:

  • 为上述查询添加一个假设,即 empl_no 和 Skill 的组合在表中是唯一的。
  • 这满足了我的需要。但是,有没有替代的 Select 语句?
  • 我不确定我的表格设计是否适合这种员工技能过滤搜索。如果表格设计没问题,似乎 Anil 的 select 语句是唯一使用 'group by ... having count(...)' 的解决方案。这是真的吗?
  • @w2know 表格设计是正确的,使用有 (...) = 3 是检查所有技能是否与用户相关的关键.. .. 有(不同的技能) 在执行中检查技能匹配的数量以避免技能关系中重复技能的情况。无论如何,这个概念保持不变..最后..作为选择声明,这是唯一可能的..
【解决方案2】:

试试这个查询。

SELECT empl_no FROM employee 
WHERE skill IN ( 'Java', 'Python', 'C' )
GROUP BY empl_no HAVING COUNT(skill)=3;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2020-01-29
    • 1970-01-01
    相关资源
    最近更新 更多