У меня 2 таблицы выглядит так:
student_info:
| student_id | major |
|------------|-------|
| 1001 | CS |
| 1002 | CS |
| 1003 | CS |
| 1004 | CS |
| 1005 | BI |
student_grade:
| student_id | course | semester | grade |
|------------|--------|-------------|-------|
| 1001 | CS.201 | 2016.Spring | 100 |
| 1001 | CS.202 | 2016.Fall | 90 |
| 1001 | EE.201 | 2016.Spring | 90 |
| 1002 | CS.201 | 2016.Spring | 70 |
| 1002 | CS.202 | 2016.Fall | 70 |
| 1003 | CS.201 | 2016.Spring | 99 |
| 1003 | EE.201 | 2016.Fall | 90 |
| 1003 | CS.202 | 2016.Fall | 90 |
| 1004 | CS.201 | 2016.Spring | 99 |
| 1004 | BI.202 | 2016.Fall | 80 |
| 1005 | CS.201 | 2017.Spring | 100 |
Теперь я хочу выбрать 2 лучших ученика в CS
классе CS.201
в 2016.Spring
, поэтому результаты могут выглядеть следующим образом:
| student_id | major | semester | course | grade |
|------------|-------|-------------|--------|-------|
| 1001 | CS | 2016.Spring | CS.201 | 100 |
| 1003 | CS | 2016.Spring | CS.201 | 99 |
| 1004 | CS | 2016.Spring | CS.201 | 99 |
Обратите внимание, что, поскольку 2 студента получили 99
в CS.201
, поэтому нам нужны все 3 записи (не только с использованием limit(2)
).
База данных MySQL.
Мой скрипт sql выглядит так:
SELECT student_info.student_id,
student_info.major,
student_grade.semester,
student_grade.course,
student_grade.grade
FROM student_info, student_grade
WHERE student_info.major = 'CS'
AND student_info.student_id = student_grade.student_id
AND student_grade.semester = '2016.Spring'
AND student_grade.course = 'CS.201'
ORDER BY student_grade.grade DESC
LIMIT 2