sql 查询不在连接日期和范围日期之间

sql query not in join & between ranges date

我在 SQL 查询方面需要一些帮助。我正在尝试查找 2019 年未参加课程的记录, 我有 2 table

course_attendance
ID STUDENT_ID SCHEDULE_ID ATTEND_DATE

学生 ID 姓名

我发现谁根本不在课程中,但我需要包括 2019 年的范围日期谁也没有参加课程,

语法如下

SELECT A2.* FROM student A2 
              WHERE A2.ID  NOT IN 
                       (Select student.ID FROM 
                                     student 
                                     inner join 
                                     course_attendance  
                                     on student.id = course_attendance.STUDENT_ID
                                     )

Result

3 弗兰克·M 1994-01-04

4 詹姆斯 M 1996-06-23

5 唐男 1992-02-25

8 本尼 M 1992-05-29

9 Pomela F 1993-02-09

11 伊卡洛斯 M 1994-11-10

12 安吉拉 F 1993-05-17

您可以在子查询中使用 match(where)

WHERE ATTEND_DATE=2019

您可以通过 LEFT JOIN 得到您的结果,如下所示:

SELECT A2.* FROM student A2 
LEFT JOIN 
course_attendance CA on A2.Id=CA.STUDENT_ID AND DATEPART(YEAR,ATTEND_DATE)=2019
where CA.STUDENT_ID IS NULL