SQL 服务器中某个字段的 DATALENGTH 前 50 条记录
Top 50 records by DATALENGTH of a field in SQL Server
Azure SQL Server 2016 - 我在组合 TOP
、MAX
和 DATALENGTH
获取前 50 条记录列表的语法时遇到问题来自特定字段的 table by DATALENGTH
。
我需要执行 DATALENGTH
的字段称为 Text
。我 不 实际上想要在结果中返回 Text
字段 - 我想要返回的是来自 50 条记录的名为 CaptureId
和 TaskSourceId
的字段在 Text
字段中具有最大的 DATALENGTH
,以及 DATALENGTH
数量。
我试过了,但没有用,出现有关 CaptureId 未包含在聚合函数或 GROUP BY 子句中的错误。
SELECT TOP 50
CaptureId,
TaskSourceId,
MAX(DATALENGTH([Text]))
FROM
Data.Capture
有人可以帮我更正这个查询吗?
您不需要 max
。只需对记录进行排序:
select top 50
captureid, tasksourceid, datalength(text) as text_len
from data.capture
order by datalength(text) desc
这将不关心关系和 return 最多 50 行。
如果您想考虑与文本字段数据长度相关的关系,请使用 top 50 with ties
而不是简单的 top 50
。在这种情况下可能 return 超过 50 条记录。
Azure SQL Server 2016 - 我在组合 TOP
、MAX
和 DATALENGTH
获取前 50 条记录列表的语法时遇到问题来自特定字段的 table by DATALENGTH
。
我需要执行 DATALENGTH
的字段称为 Text
。我 不 实际上想要在结果中返回 Text
字段 - 我想要返回的是来自 50 条记录的名为 CaptureId
和 TaskSourceId
的字段在 Text
字段中具有最大的 DATALENGTH
,以及 DATALENGTH
数量。
我试过了,但没有用,出现有关 CaptureId 未包含在聚合函数或 GROUP BY 子句中的错误。
SELECT TOP 50
CaptureId,
TaskSourceId,
MAX(DATALENGTH([Text]))
FROM
Data.Capture
有人可以帮我更正这个查询吗?
您不需要 max
。只需对记录进行排序:
select top 50
captureid, tasksourceid, datalength(text) as text_len
from data.capture
order by datalength(text) desc
这将不关心关系和 return 最多 50 行。
如果您想考虑与文本字段数据长度相关的关系,请使用 top 50 with ties
而不是简单的 top 50
。在这种情况下可能 return 超过 50 条记录。