SELECT * FROM ScoresTable WHERE Score =
(SELECT MAX(Score) FROM ScoresTable AS st WHERE st.Date = ScoresTable.Date)
Есть ли имя для описания с помощью оператора SELECT в предложении WHERE? Это хорошая / плохая практика?
Может ли это быть лучшей альтернативой?
SELECT ScoresTable.*
FROM ScoresTable INNER JOIN
(SELECT Date, MAX(Score) AS MaxScore
FROM ScoresTable GROUP BY Date) SubQuery
ON ScoresTable.Date = SubQuery.Date
AND ScoresTable.Score = SubQuery.MaxScore
Это гораздо менее элегантно, но, похоже, работает быстрее, чем моя предыдущая версия. Мне это не нравится, потому что он не очень четко отображается в графическом интерфейсе (и это должно быть понятно начинающим SQL). Я мог бы разбить его на два отдельных запроса, но потом все начинает захламляться ...
Примечание. Мне нужно больше, чем просто Дата и Оценка (например, имя)