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初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得困惑了……
N.B.我不仅需要日期和分数(例如姓名)
最佳答案
称为相关子查询。它有它的用途。