SQL

在WHERE子句中使用SELECT语句

发布于 2021-03-12 09:49:23

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初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得混乱了……

注意:我不仅需要日期和分数(例如姓名)

关注者
0
被浏览
100
1 个回答
  • 面试哥
    面试哥 2021-03-12
    为面试而生,有面试问题,就找面试哥。

    称为相关子查询。它有它的用途。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看