MySQL 查询字段的最短和最长长度
MySQL query for shortest & longest length of a field
问题
我需要从数据库中return最短和最长的城市名称及其各自的长度。我也欢迎改进此查询以使其更优雅。
SQL Fiddle
到目前为止,我有一个示例数据库和查询:
http://sqlfiddle.com/#!9/3b4a7c/1/0
查询
SELECT DISTINCT City, LENGTH(City) as len
FROM STATION
WHERE LENGTH(City)=(SELECT MIN(LENGTH(City)) FROM STATION)
OR LENGTH(City)=(SELECT MAX(LENGTH(City)) FROM STATION)
ORDER BY len
当前结果
Dole 4
Reus 4
Sant'Egidio del Monte Albino 28
想要的结果
Dole 4
Sant'Egidio del Monte Albino 28
我会使用 union all
、order by
和 limit
来做到这一点。 . .如果你只想要一个最长和最短名字的例子:
(select city, length(city)
from station
order by length(city) asc
limit 1
) union all
(select city, length(city)
from station
order by length(city) desc
limit 1
);
如果你想要联系,当不止一个城市匹配时,我会这样做:
select s.city, length(s.city)
from station s cross join
(select max(length(city)) as maxl, min(length(city)) as minl
from station
) ss
where length(s.city) in (ss.minl, ss.maxl);
select min(a.city),length(a.city)
from station a
join (SELECT min(length(city)) minlength,max(length(city)) maxlength from station) b
on length(a.city) in (minlength,maxlength)
group by length(a.city)
问题
我需要从数据库中return最短和最长的城市名称及其各自的长度。我也欢迎改进此查询以使其更优雅。
SQL Fiddle
到目前为止,我有一个示例数据库和查询: http://sqlfiddle.com/#!9/3b4a7c/1/0
查询
SELECT DISTINCT City, LENGTH(City) as len
FROM STATION
WHERE LENGTH(City)=(SELECT MIN(LENGTH(City)) FROM STATION)
OR LENGTH(City)=(SELECT MAX(LENGTH(City)) FROM STATION)
ORDER BY len
当前结果
Dole 4
Reus 4
Sant'Egidio del Monte Albino 28
想要的结果
Dole 4
Sant'Egidio del Monte Albino 28
我会使用 union all
、order by
和 limit
来做到这一点。 . .如果你只想要一个最长和最短名字的例子:
(select city, length(city)
from station
order by length(city) asc
limit 1
) union all
(select city, length(city)
from station
order by length(city) desc
limit 1
);
如果你想要联系,当不止一个城市匹配时,我会这样做:
select s.city, length(s.city)
from station s cross join
(select max(length(city)) as maxl, min(length(city)) as minl
from station
) ss
where length(s.city) in (ss.minl, ss.maxl);
select min(a.city),length(a.city)
from station a
join (SELECT min(length(city)) minlength,max(length(city)) maxlength from station) b
on length(a.city) in (minlength,maxlength)
group by length(a.city)