gpt4 book ai didi

mysql - 如何选择列中具有最大值的行

转载 作者:行者123 更新时间:2023-11-29 03:50:04 25 4
gpt4 key购买 nike

我在 Hackerrank 上做这个挑战:

https://www.hackerrank.com/challenges/weather-observation-station-5

我是 SQL 的初学者,我正在尝试查询具有列最大值的所有行,最大值我只能通过 MAX() 获得。所以我正在尝试这个:

SELECT CITY, LENGTH(CITY) AS citylength
FROM STATION
WHERE LENGTH(CITY) = (SELECT MIN(CITY) FROM STATION)

然后出现错误。

我在 google 上查找过有关子查询的信息,但我还不太习惯,不知道它到底是如何工作的,所以我需要你们的帮助。谢谢。

总而言之,我需要一个查询,该查询可以获取表中具有通过 MAX() 子句获得的最大值的行。

最佳答案

要求你找出两个不同的结果:

  • 长度最大的城市(在并列的情况下是字母表中的第一个)
  • 长度最短的城市(在并列的情况下是字母表中的第一个)

这意味着两个不同的查询,您可以使用 UNION ALL 将它们粘合在一起。

(
select concat(city, ' ', length(city))
from station
order by length(city), city limit 1
)
union all
(
select concat(city, ' ', length(city))
from station
order by length(city) desc, city limit 1
);

正如 Strawberry 指出的那样:您需要括号才能放置两个 ORDER BY 子句,每个查询部分一个。 (否则你只能在整个查询的末尾放置一个 ORDER BY 子句。)

在您的查询中,您正在比较 LENGTH(CITY),即一个包含名称长度的整数和 MIN(CITY),即城市名称本身,这是行不通的当然。您必须与 MIN(LENGTH(CITY)) 进行比较。然后对最大值执行相同的操作,然后使用 UNION ALL。然而,这并没有解决 LIMIT 查询所解决的关系问题。

关于mysql - 如何选择列中具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com