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
我在 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