如果我说:
select max(length(Name))
from my_table
我得到的结果为18,但我也想要有关的数据。所以,如果我说:
select max(length(Name)),
Name
from my_table
...这没用。我猜应该有一个自我连接,我无法弄清楚。
谁能给我一个线索?
如果我说:
select max(length(Name))
from my_table
我得到的结果为18,但我也想要有关的数据。所以,如果我说:
select max(length(Name)),
Name
from my_table
...这没用。我猜应该有一个自我连接,我无法弄清楚。
谁能给我一个线索?
Answers:
编辑后,将适用于未知的max()值:
select name, length( name )
from my_table
where length( name ) = ( select max( length( name ) ) from my_table );
name
点为18
select max(length(Name)) as num1,Name from my_table group by Name having num1 = 18
,因为从第一个查询中我知道max是18。但是如何将其组合到一个查询中呢?
好的,我不确定您使用的是什么(MySQL,SLQ Server,Oracle,MS Access ..),但是您可以尝试下面的代码。它可以在W3School示例数据库中工作。在这里 尝试:
SELECT city, max(length(city)) FROM Customers;
使用:
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)
按照以下建议使用CHAR_LENGTH()代替LENGTH(): MySQL-length()vs char_length()
选择名称,CHAR_LENGTH(name)AS mlen from mytable ORDER BY mlen DESC LIMIT 1