sql - 如何根据另一个表的不同值从一个表中获取值?
问题描述
我正在尝试编写返回我 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 中主要技能是重复的。
我究竟做错了什么?它如何改善?
解决方案
请尝试以下操作:
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)
推荐阅读
- time-complexity - 选择排序的时间复杂度
- android - 如何从系统服务中获取方法?
- riscv - 如何为没有 FPU 的架构生成 RISC V 工具链?
- azure-data-factory - 使用 Azure 数据工厂 (ADF) 数据流 (DF) 从/向 Azure Data Lake Store gen1 发送和接收数据
- python - 使用 Python 向 API Prestashop 发送 POST 请求
- php - 使用刷新和访问令牌通过 google api v3 (php) 上传到 youtube
- oop - NativeScript 中的 MVVM 模式 - 如何使用?
- c++ - 使用免注册 COM 时 Powershell 无法使用 COM 对象
- python - 如何解决下载谷歌驱动器文件时抛出的错误
- apache-spark - 防止 SparkHistoryServer 重定向到 HTTP