首页 > 解决方案 > 如何根据另一个表的不同值从一个表中获取值?

问题描述

我正在尝试编写返回我 subject_id(result table) 的 sql 查询,其中 primary_skill(student table) 是唯一的。

结果表有列(student_id、subject_id、mark)

我的查询:

SELECT r.subject_id 
FROM result r 
  JOIN student s ON r.student_id = s.student_id 
WHERE s.primary_skill IN (SELECT DISTINCT primary_skill 
                          FROM student) 
GROUP BY 1;

我有这个结果:

subject_id
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1001

但我应该只返回 id 1001,因为只有这个主题有独特的学生 primary_skill,在其他 id 中主要技能是重复的。

我究竟做错了什么?它如何改善?

标签: sqlpostgresql

解决方案


请尝试以下操作:

select result.subject_id from student join result on student.id =result.student_id where student.primary_skill in (select primary_skill from student group by primary_skill having COUNT(*)=1)


推荐阅读