如何在postgresql中找到特定字段中的最大数据长度?

时间:2017-03-30 16:20:52

标签: postgresql

我有一张桌子"用户"其中一个是" USERNAME"。我试图通过比较所有用户名找出用户名的最大长度。我需要这个最大值用于另一个查询。我试过了 SELECT max(length(users.username)),用户名FROM Users group by username;返回所有行。

示例:

USERNAME

塔拉
Amyamyse
汤米
约翰

我想得到如下结果:

MAX_Length USERNAME

8 Amyamyse

- 提前谢谢。

3 个答案:

答案 0 :(得分:4)

另一种选择:

select username, length(username) as username_length
from users
where length(username) = (select max(length(username)) from users)

如果用户名最长,则会返回多个用户。如果您有打破平局的具体规则,请更新您的问题。

答案 1 :(得分:3)

避免大量使用功能的另一种可能性:

SELECT
     username
   , length(username)
FROM
    users
GROUP BY
    username
ORDER BY
    length(username) desc
LIMIT 1;

答案 2 :(得分:1)

您将使用子查询,因为如果您使用HAVING子句,group by将阻止所需的结果

SELECT name, LENGTH(name)
FROM your_table
WHERE LENGTH(name)=( SELECT MAX(length(name)) FROM your_table)
GROUP BY name

另外,您可以在此sqlfiddler上测试答案 http://sqlfiddle.com/#!15/c0ff8/5