当前位置: 首页 > 面试题库 >

在WHERE子句中使用SELECT语句

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

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


问题答案:

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



 类似资料:
  • 问题内容: 我将如何在没有硬编码值的情况下编写此sql语句? 宁愿有这样的事情: 提前致谢.. 问题答案: 用您当前的方式构造SQL查询是一个糟糕的主意,因为它为各种SQL注入攻击打开了大门 。为了正确执行此操作,您必须改为使用“ 预备语句”。这也将解决您目前显然遇到的各种逃避问题。 请注意,这是一个昂贵的调用(除非您的应用程序服务器使用语句缓存和其他类似的功能)。从理论上讲,最好先准备一次语句,

  • 数据库:Sybase Advantage 11 在我对数据进行规范化的过程中,我试图删除从以下语句中得到的结果:

  • 问题内容: 我有一个执行一些排名的SQL查询,如下所示: 我想在末尾的WHERE条件下使用该排名。 现在,我将此查询嵌套在另一个查询中,并在该查询上进行排名过滤,但是没有更简单或更快速的方法来过滤SELECT语句中的此类值吗? 问题答案: 使用CTE(公用表表达式)-一种“内联”视图,仅用于下一条语句:

  • 问题内容: 我试图弄清楚如何在MySQL中优化一个非常慢的查询(我没有设计这个): 比较一下: 说明语句对我没有帮助: 好的,它仍然认为它需要大约400万个条目才能计数,但是我可以计算文件中的行数比这还要快!我不明白为什么MySQL要花这么长时间。 这是表的定义: 版: 有什么明显的我想念的东西吗?(是的,我已经尝试过“ SELECT COUNT(change_event_id)”,但是没有性能差

  • 来自Teradata,我通常会创建一个包含一些变量的易失性表,我会在代码中使用这些变量。 例如。, 然后我会在SELECT WHERE子句中使用该表: 我试图在色调(Impala editor)中执行类似的操作,但遇到了一个错误: AnalysisException:第5行中的语法错误:未定义:来自表名隐藏^遇到:来自预期的:大小写、强制转换、默认值、存在、FALSE、IF、INTERVAL、NO

  • 问题内容: 我想在Derby数据库中模拟以下类型的查询(即Microsoft SQL Server语法)的效果。目标是返回表中存储在“ someColumn”中的日期少于7天的所有记录。这是我希望实现的Microsoft SQL语法… 我已经能够确定在Derby中它将涉及使用timestampdiff函数。但是我不知道Derby中WHERE子句中函数用法的语法,因此我找不到任何示例。我发现了很多在