首页 > 解决方案 > SQL Server 中字段的 DATALENGTH 前 50 条记录

问题描述

Azure SQL Server 2016 - 我在组合语法和从特定字段的表中获取前 50 条记录的列表时TOP遇到问题。MAXDATALENGTHDATALENGTH

我需要执行的字段DATALENGTH称为Text. 我实际上并不希望在结果中返回该字段Text- 我想要返回的是被调用的字段CaptureId以及该字段TaskSourceId中最大的 50 条记录以及数量。DATALENGTHTextDATALENGTH

我试过这个,但它没有工作,关于 CaptureId 的错误未包含在聚合函数或 GROUP BY 子句中。

SELECT TOP 50 
    CaptureId, 
    TaskSourceId, 
    MAX(DATALENGTH([Text]))
FROM 
    Data.Capture

有人可以帮我更正这个查询吗?

标签: sql-serversql-limit

解决方案


你不需要max。只需对记录进行排序:

select top 50 
  captureid, tasksourceid, datalength(text) as text_len
from data.capture
order by datalength(text) desc

这将不关心关系并返回最多 50 行。

如果您想考虑有关文本字段数据长度的关系,请使用top 50 with ties而不是 simple top 50。在这种情况下,它可能会返回超过 50 条记录。


推荐阅读