最大(长度(字段))在MySQL

如果我说:

select max(length(Name)) from my_table 

我得到的结果是18,但我也要关心的数据。 所以如果我说:

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

…这是行不通的。 应该有一个自我join,我想我无法弄清楚。

任何人都可以请给我一个线索?

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

编辑,将为未知的最大()值工作:

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

使用:

  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) 
 select * from my_table where length( Name ) = ( select max( length( Name ) ) from my_table limit 1 ); 

这涉及两个表扫描,所以可能不是很快!

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

这将给你在那个具有最大长度的特定列中的logging。

如果你需要同一张表的最大和最小值:

  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; 

好吧,我不知道你在用什么(MySQL,SLQ服务器,Oracle,MS Access ..)但是你可以尝试下面的代码。 它在W3School示例数据库中工作。 这里试试这个:

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

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

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

可能不是最佳的解决scheme,虽然…但似乎工作。