mysql中的max(length(field))

时间:2010-03-01 17:12:56

标签: sql mysql

如果我说:

select max(length(Name)) 
  from my_table

我得到结果为18,但我也想要有关数据。所以,如果我说:

select max(length(Name)), 
       Name 
  from my_table

......它不起作用。应该有一个自我加入,我想我无法弄明白。

有谁能请给我一个线索?

9 个答案:

答案 0 :(得分:146)

SELECT  name, LENGTH(name) AS mlen
FROM    mytable
ORDER BY
        mlen DESC
LIMIT 1

答案 1 :(得分:13)

已编辑,适用于未知的max()值:

select name, length( name )
from my_table
where length( name ) = ( select max( length( name ) ) from my_table );

答案 2 :(得分:6)

好的,我不确定你在用什么(MySQL,SLQ服务器,Oracle,MS Access ......) 但您可以尝试下面的代码。它适用于W3School示例DB。 Here 试试这个:

SELECT city, max(length(city)) FROM Customers;

答案 3 :(得分:2)

使用:

  SELECT mt.name 
    FROM MY_TABLE mt
GROUP BY mt.name
  HAVING MAX(LENGTH(mt.name)) = 18

...假设你事先知道了长度。如果不这样做,请使用:

  SELECT mt.name 
    FROM MY_TABLE mt
    JOIN (SELECT MAX(LENGTH(x.name) AS max_length
            FROM MY_TABLE x) y ON y.max_length = LENGTH(mt.name)

答案 4 :(得分:2)

如果你需要来自同一张桌子的最大值和最小值:

    select * from (
(select city, length(city) as maxlen from station
order by maxlen desc limit 1)
union
(select city, length(city) as minlen from station
order by minlen,city limit 1))a;

答案 5 :(得分:1)

select * 
from my_table 
where length( Name ) = ( 
      select max( length( Name ) ) 
      from my_table
      limit 1 
);

这涉及两次表格扫描,所以可能不会很快!

答案 6 :(得分:1)

Select URColumnName From URTableName Where length(URColumnName ) IN 
(Select max(length(URColumnName)) From URTableName);

这将为您提供该特定列中具有最大长度的记录。

答案 7 :(得分:0)

我想你可以使用这样的解决方案:

select name, length(name)
from users
where id = (
    select id
    from users
    order by length(name) desc
    limit 1
);

虽然可能不是最佳解决方案......但似乎有效。

答案 8 :(得分:0)

使用CHAR_LENGTH()代替LENGTH(),如以下建议: MySQL - length() vs char_length()

选择名称,CHAR_LENGTH(名称),以mlen表示 来自mytable 订购按毫升DESC LIMIT 1