【发布时间】:2017-05-24 17:58:17
【问题描述】:
我有一个大约 20 列的查询,为简洁起见,我显示的是 *
SELECT TOP 1
*
FROM
[Frontier].[dbo].[tblLoadFile]
WHERE
TN = 4132644856
ORDER BY
CallTime DESC
有人告诉我,我应该在 subquery 中的 calldate 上使用 max,因为它是编写查询的“更快”和“正确”的方式。
我将如何以及在何处放入max(calldate) 子查询?
这是用于 SQL Server / T-SQL
【问题讨论】:
-
你到底想用这个查询做什么?返回最新的
CallTime?返回与最近的CallTime关联的所有列? -
为了简洁,不要删除重要的细节。您特别询问是否在列上执行
Max()函数,但要删除SELECT的整个列结构。显示完整的查询。 -
听起来有人建议您将
Top 1替换为max(calldate)。但是,如果您使用 MAX,您还需要一个 GROUP BY,因为它是一个聚合函数(@ollie 以不同的方式提出相同的问题。基本上您需要 1 列还是 20 列,因为这会改变查询。 -
您的意思是“使用 max(calldate) 而不是 TOP 1 order by callTime”吗?如果是这样,我认为这不是更快或更合适。
-
@JacobH 取决于表的索引方式。如果出现平局,也使用 MAX() 可能会导致多行。
标签: sql sql-server tsql subquery