我陷入了一个愚蠢的问题。它必须是最陈词滥调的解决方案之一。
表 student_selection:
Columns
=======
student_id
subject_id
faculty_id
另一个表:sub_group
Columns
=======
subject_id
sub_group
他们是subject_id的联合。
我想从table sub_group中找到那些subject_id,其中,subject_id不存在于student_selection表中。
例如:
sub_group(subject_id)
2
3
4
student_selection(subject_id)
2
3
2
3
2
3
输出
4
答案 0 :(得分:0)
您可以运行简单的not in
查询来获取数据。
像:
SELECT
subject_id
FROM
sub_group
WHERE
subject_id not in (
SELECT
DISTINCT subject_id
FROM
student_selection
)
答案 1 :(得分:0)
标准SQL IN子句:
select subject_id from sub_group
where subject_id not in (select subject_id from student_selection);
标准SQL EXISTS子句:
select subject_id from sub_group sg
where not exists
(select * from student_selection ss where ss.subject_id = sg.subject_id);
设置基于查询。一些dbms支持基于集合的操作。他们使用单词EXCEPT或MINUS从一个集合中减去另一个集合。 (MySQL不支持此。)
select subject_id from sub_group
except
select subject_id from student_selection;
最后你可以使用一个技巧,你可以在外面加入第二个表,并且只保留那些有外部连接记录的结果(即第二个表中没有macthing记录)。这也是标准的SQL。对于没有经验的读者来说,它的可读性较差,但在某些dbms上碰巧更快。
select sg.subject_id
from sub_group sg
left join student_selection ss on ss.subject_id = sg.subject_id
where ss.subject_id is null;