【问题标题】:Top 50 records by DATALENGTH of a field in SQL ServerSQL Server 中字段的 DATALENGTH 前 50 条记录
【发布时间】:2018-09-07 22:19:54
【问题描述】:

Azure SQL Server 2016 - 我在组合 TOPMAXDATALENGTH 以通过特定字段的 DATALENGTH 从表中获取前 50 条记录的列表时遇到问题。

我需要执行DATALENGTH 的字段称为Text。我实际上希望在结果中返回 Text 字段 - 我想要返回的是来自 @ 中最大 DATALENGTH 的 50 条记录中名为 CaptureIdTaskSourceId 的字段987654331@ 字段,以及DATALENGTH 金额。

我尝试了这个,但没有成功,出现关于 CaptureId 未包含在聚合函数或 GROUP BY 子句中的错误。

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

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

【问题讨论】:

    标签: sql-server sql-limit


    【解决方案1】:

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

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

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

    如果您想计算文本字段数据长度的关联,请使用top 50 with ties 而不是简单的top 50。在这种情况下,它可能返回超过 50 条记录。

    【讨论】:

    • 嗨,Kamil,您似乎在我编辑时发布了您的答案。我编辑提到我还需要返回Text 字段的实际DATALENGTH
    • 啊,我看到你刚刚编辑了你的答案。谢谢!我现在试试这个并尽快标记为答案。
    • 正是我需要的。谢谢卡米尔。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2013-12-30
    • 2012-09-22
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多