Попытка выбрать максимальный столбец учебного года - PullRequest
2 голосов
/ 03 октября 2019

Я пытаюсь последовать ответу на этот вопрос.

Однако это не работает для меня, и я не понимаю, почему.

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 здесь.

1 Ответ

2 голосов
/ 03 октября 2019

Вы должны присоединиться к userID вместо id. Кроме того, ваш запрос в порядке.

SELECT h.*
FROM `student-history` h
LEFT OUTER JOIN `student-history` h2 ON h.userID = h2.userID AND h.`school-year` < h2.`school-year`
WHERE 
h2.id IS NULL
...