如何查询STATION表中最短/最长名称城市及对应长度(含排序规则)
解决STATION表最短/最长名称城市查询问题
需求回顾
查询STATION表中名称最短和最长的两座城市,以及它们的名称长度:
- 若存在多个最短或最长名称的城市,选择按字母顺序排列最先出现的
- 允许使用两个独立查询获取结果
解决方案
1. 查询名称最短的城市及长度
先通过子查询获取最小名称长度,再筛选出对应长度的城市,按字母序排序后取第一个:
SELECT CITY, LENGTH(CITY) FROM STATION WHERE LENGTH(CITY) = (SELECT MIN(LENGTH(CITY)) FROM STATION) ORDER BY CITY ASC LIMIT 1;
2. 查询名称最长的城市及长度
同理,先获取最大名称长度,筛选后按字母序取第一个:
SELECT CITY, LENGTH(CITY) FROM STATION WHERE LENGTH(CITY) = (SELECT MAX(LENGTH(CITY)) FROM STATION) ORDER BY CITY ASC LIMIT 1;
对原有尝试的说明
你之前的查询仅返回了最大/最小长度值,没有关联对应的城市名称。且在聚合查询后加ORDER BY CITY是无效的——因为聚合函数返回的是单个值集合,无法对原表的城市字段排序。通过子查询锁定目标长度,再过滤排序取首条,就能满足需求中的所有条件。
内容的提问来源于stack exchange,提问作者tocodeistocreate
相关产品推荐
相关产品推荐

