例如

id   staff_id   skill_id   mainskill
1    1          24         1
2    1          24         0
3    1          7          0
4    4          24         0
5    4          18         0
6    6          8          0
7    6          18         1

我希望结果只包含技能id为且在所有数据中只出现一次的元组。换言之,我想检索包含仅由一名工作人员拥有的技能id的元组。
所以期望的输出是:
id   staff_id   skill_id   mainskill
3    1          7          0
6    6          8          0

提前谢谢:)。

最佳答案

您可以使用GROUP BYHAVING来完成,如下所示:

SELECT
  MAX(id) as id,
  MAX(staff_id) as staff_id,
  skill_id,
  MAX(mainskill) as mainskill
FROM MyTable
GROUP BY skill_id
HAVING COUNT(1)=1

09-25 17:12