我已经在谷歌上搜索并浏览其他答案一段时间了,但找不到任何有用的东西。
我有 5 个维度表(学生和考试是两个)和一个事实表(入学)。
我正在尝试获取在 2023 年参加过难度级别考试的学生的姓名。此代码不会返回任何错误,但也没有给我任何结果。
SELECT
s.First_Name,
s.Last_Name
FROM Students s
JOIN
Enrolment e
ON s.Student_ID = e.Student_ID
WHERE e.Enrolment_Date IN (SELECT
YEAR(e.Enrolment_Date) = '2023'
FROM
Enrolment
WHERE Exam_ID IN (SELECT
Exam_ID
FROM
Exams
WHERE
Difficulty_Level = 'Hard'));
我会使用联接。 MySQL 仍然比子查询更可靠地优化连接。
SELECT
s.First_Name,
s.Last_Name
FROM Students s
JOIN Enrolment e ON s.Student_ID = e.Student_ID
JOIN Exams x ON e.Exam_ID = x.Exam_ID
WHERE e.Enrolment_Date >= '2023-01-01'
AND e.Enrolment_Date < '2024-01-01'
AND x.Difficulty_Level = 'Hard';