【问题标题】:Find records with Minimum length data查找具有最小长度数据的记录
【发布时间】:2015-09-10 10:34:01
【问题描述】:

我有一张表#tempTest,其中包含如下数据:

ID  Name
1   A
2   AB
3   ABC
4   ABCD
5   ABCDE
6   ABCDEF
7   X
8   QRWXYZ

现在我需要表格中最短的名字。

我试过这样:

SELECT TOP 1(name) Smallest  FROM #tempTest
GROUP BY name
ORDER BY LEN(name) 

那代表:

Smallest
A

但我需要的是:

ID  Name
1   A
7   X

【问题讨论】:

    标签: sql-server sql-server-2008-r2 datalength


    【解决方案1】:
    SELECT TOP 1 WITH TIES (name) Smallest  FROM #tempTest
    GROUP BY name
    ORDER BY LEN(name) 
    

    【讨论】:

    • 可能值得添加一些关于 WITH TIES 语法的信息,因为它并不常见。 MSDN:msdn.microsoft.com/en-us/library/ms189463.aspxWITH TIES 当您想要返回两个或更多行并列在有限结果集中的最后一个位置时使用。必须与 ORDER BY 子句一起使用。
    【解决方案2】:
    SELECT id, name FROM #tempTest
    WHERE LEN(name) = (SELECT MIN(LEN(name)) FROM #tempTest)
    

    【讨论】:

      猜你喜欢
      • 2018-09-29
      • 2020-06-12
      • 1970-01-01
      • 2020-11-27
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      相关资源
      最近更新 更多