Я пытаюсь последовать ответу на этот вопрос.
Однако это не работает для меня, и я не понимаю, почему.
SELECT h.*
FROM `student-history` h
LEFT OUTER JOIN `student-history` h2 ON h.id = h2.id AND h.`school-year` < h2.`school-year`
WHERE
h2.id IS NULL
Мой SQL почти такой же, как у Адриана в его ответе, но он не дает таких же результатов. В основном таблица student-history
имеет столбец tinyint(1)
, называемый school-year
, который обычно равен 1-3. Каждый пользователь может иметь несколько записей. Поэтому я хочу найти самую высокую строку в году.
Я не совсем понимаю его ответ, поэтому я не могу продолжать дальше, но если кто-то может помочь мне в том, где я ошибаюсь,было бы здорово.
Если я добавлю к предложению WHERE
в вышеприведенном утверждении, чтобы сузить его по пользователю, например, AND h.userID = 54
, я все равно получу три строки за все три года присутствия учащегося. LEFT OUTER JOIN
, похоже, вообще ничего не меняет.
Я создал скрипту SQL здесь.