jof*_*itz 9 sql select where-clause
SELECT * FROM ScoresTable WHERE Score =
(SELECT MAX(Score) FROM ScoresTable AS st WHERE st.Date = ScoresTable.Date)
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
它不那么优雅,但似乎比我以前的版本运行得更快.我不喜欢它,因为它在GUI中没有很清楚地显示(并且需要SQL初学者理解).我可以将它分成两个单独的查询,但随后事情开始变得混乱......
NB我需要的不仅仅是日期和分数(例如姓名)
这根本不是一种做法.它们通常被称为SUBQUERY,SUBSELECT或NESTED QUERY.
这是一个相对昂贵的操作,但在处理数据库时遇到很多子查询是很常见的,因为它是对数据执行某种操作的唯一方法.