首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字段最短最长的MySQL查询

字段最短最长的MySQL查询
EN

Stack Overflow用户
提问于 2016-08-01 00:29:59
回答 2查看 3.1K关注 0票数 2

问题

我需要从数据库中返回最短和最长的城市名称以及它们各自的长度。我还欢迎对此查询进行改进,以使其更加优雅。

SQL Fiddle

到目前为止,我有一个示例数据库&查询:http://sqlfiddle.com/#!9/3b4a7c/1/0

查询

代码语言:javascript
复制
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

当前结果

代码语言:javascript
复制
Dole    4
Reus    4
Sant'Egidio del Monte Albino    28

期望结果

代码语言:javascript
复制
Dole    4
Sant'Egidio del Monte Albino    28
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-01 00:33:25

我会使用union allorder bylimit来完成这个任务。。。如果您只想要一个最长和最短的名称的例子:

代码语言:javascript
复制
(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
);

如果你想打领带,当不止一个城市比赛的时候,我会:

代码语言:javascript
复制
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);
票数 2
EN

Stack Overflow用户

发布于 2016-08-01 00:41:03

代码语言:javascript
复制
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)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38689560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档