SELECT * FROM ScoresTable WHERE Score =
(SELECT MAX(Score) FROM ScoresTable AS st WHERE st.Date = ScoresTable.Date)
在 WHERE 子句中使用 SELECT 语句的行为有一个专门的术语吗?这个做法好还是不好?
这是否有更好的替代方案?
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
这个版本虽然不太优雅,但似乎比我的以前的版本运行更快。我不喜欢它,因为在GUI中显示得不太清晰(而且需要SQL初学者理解)。我可以将其拆分为两个单独的查询,但这样会使事情变得混乱...
注:我需要的不仅仅是日期和分数(例如名称)。