我想找到城市和城市长度(即单词CITY中的字符数),其中城市长度在表中最大。如果我们有多个值,则必须根据城市的字母顺序仅取第一个值。
我观察到一个奇怪的事情:
SELECT CITY, LENGTH(CITY) FROM STATION ORDER BY LENGTH(CITY) DESC, CITY;
在给我第一行的情况下为我提供了具有所需输出的正确表格Length(City) = 21
。但是,当我尝试使用
SELECT CITY, LENGTH(CITY) FROM STATION WHERE ROWNUM = 1 ORDER BY LENGTH(CITY) DESC, CITY;
在Oracle中的查询它给了我另外一行Length(City) = 12
。
请帮助我了解问题所在!同样,仅供参考,城市的最大长度只有一个值。
在WHERE
您的查询的WHERE子句之前执行ORDER BY
,因此ROWNUM = 1
不是预期的行。您可以FETCH FIRST ROW ONLY
改用:
SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY) DESC, CITY
FETCH FIRST ROW ONLY;
...或者您将该语句放在子选择中,WHERE
并ROWNUM
在此上使用:
SELECT *
FROM (
SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY) DESC, CITY
)x WHERE ROWNUM = 1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句