Sql 在where子句中编写子查询
我有下列表格Sql 在where子句中编写子查询,sql,Sql,我有下列表格 student(student_id, name) assignment(student_id, course_code, assignment number) 我正试图写一个查询,返回那些提交了某一特定课程的作业1但没有提交作业2的学生 我已经写了下面的查询,但是很难理解,因为它会根据每个课程返回结果。有什么建议吗 SELECT name, a.student_id, course_code FROM assignment a INNER JOIN student s on a
student(student_id, name)
assignment(student_id, course_code, assignment number)
我正试图写一个查询,返回那些提交了某一特定课程的作业1但没有提交作业2的学生
我已经写了下面的查询,但是很难理解,因为它会根据每个课程返回结果。有什么建议吗
SELECT name, a.student_id, course_code
FROM assignment a INNER JOIN student s
on a.student_id = s.student_id
WHERE assignment_number = 1
AND assignment_number != 2
下面是一把小提琴,让我们看到它的作用:
下面是一把小提琴,让我们看到它的作用:
已完成作业1但未完成作业2的学生名单:
select s.name, a.student_id, a.course_code
from assignment a
inner join student s on a.student_id = s.student_id
where a.student_id in
(Select student_id from assignment
where assignment_id = 1) -- All students that submitted Assignment 1
and a.assignment_id !=2
已完成作业1但未完成作业2的学生名单:
select s.name, a.student_id, a.course_code
from assignment a
inner join student s on a.student_id = s.student_id
where a.student_id in
(Select student_id from assignment
where assignment_id = 1) -- All students that submitted Assignment 1
and a.assignment_id !=2
这是正确的,只是您使用的是
不存在
,然后是!=2
这是正确的,除了您正在使用的不存在
和!=2
SELECT
s.name,
s.student_id,
a.course_code
FROM
assignment a
INNER JOIN
student s
ON
a.student_id = s.student_id
WHERE
assignment_number in( 1,2 )
GROUP BY
s.name,
s.student_id,
a.course_code
HAVING max(assignment_number) = 1