SQL Return 来自 MAX() 函数的行
SQL Return row from MAX() function
我第一次尝试 SQL,我在应用 MAX() 函数时遇到了一些困难。
如果我 运行 以下内容,我会收到正确的 returned 值:
SELECT MAX(count)
FROM readings
但是,当我尝试 return 与该值相关的字段时,我得到了不正确的 return。 运行 以下 return 是正确的 'count' 值,但 'location' 值不正确
SELECT MAX(count), location
FROM readings
我从上面得到的结果与以下内容相同:
SELECT count, location
FROM readings
ORDER BY count DESC
LIMIT 1
能否请您告知是否可以使用 MAX()
函数实现此目的,或者我只是误解了 MAX
的实际作用!
非常感谢您的建议。
您使用的是什么数据库系统? MAX
是一个 aggregation function,应该在整个 table 范围内运行,而 select 单个值(如查询中的 location
)仅在一行。在大多数数据库中,如果您想 select 另一列,则必须在 GROUP BY
子句中指定该列,或者也将其包装在类似的聚合函数中。
要在同一行中获取 location
的值,您通常应该使用 subselect,如下所示:
SELECT count, location
FROM readings
WHERE count = (SELECT MAX(count) FROM readings);
请注意,这并不能保证单一的结果;可能有几行匹配最大 count
值!
我第一次尝试 SQL,我在应用 MAX() 函数时遇到了一些困难。
如果我 运行 以下内容,我会收到正确的 returned 值:
SELECT MAX(count)
FROM readings
但是,当我尝试 return 与该值相关的字段时,我得到了不正确的 return。 运行 以下 return 是正确的 'count' 值,但 'location' 值不正确
SELECT MAX(count), location
FROM readings
我从上面得到的结果与以下内容相同:
SELECT count, location
FROM readings
ORDER BY count DESC
LIMIT 1
能否请您告知是否可以使用 MAX()
函数实现此目的,或者我只是误解了 MAX
的实际作用!
非常感谢您的建议。
您使用的是什么数据库系统? MAX
是一个 aggregation function,应该在整个 table 范围内运行,而 select 单个值(如查询中的 location
)仅在一行。在大多数数据库中,如果您想 select 另一列,则必须在 GROUP BY
子句中指定该列,或者也将其包装在类似的聚合函数中。
要在同一行中获取 location
的值,您通常应该使用 subselect,如下所示:
SELECT count, location
FROM readings
WHERE count = (SELECT MAX(count) FROM readings);
请注意,这并不能保证单一的结果;可能有几行匹配最大 count
值!