gpt4 book ai didi

Mysql - 分组并选择最大值

转载 作者:行者123 更新时间:2023-11-29 09:48:49 25 4
gpt4 key购买 nike

我有下表:

reservas_tanatosalas enter image description here

我有以下查询:

SELECT r.cod_reserva, MAX(r.hora_fin_utc) FROM reservas_tanatosalas r GROUP BY r.cod_tanatosala

结果: 显示正确的最大值,但显示错误的 cod_reserva。为什么?

cod_reserva  MAX(r.hora_fin_utc)
7 9999999999
6 9999999999

我想要得到什么?:

cod_reserva  MAX(r.hora_fin_utc)
7 9999999999
8 9999999999

更新

cod_reserva 将来可能会更改为 varchar,因此我不能选择在其上使用 max。

最佳答案

请勿为此使用GROUP BY。您的查询格式错误,无法在最新版本的 MySQL(使用默认设置)或几乎任何数据库中运行。

select r.*
from r
where r.hora_fin_utc = (select max(r2.hora_fin_utc)
from reservas_tanatosalas r2
where r2.cod_tanatosala = r.cod_tanatosala
);

将问题视为过滤问题,而不是聚合问题。您想要过滤数据,以便结果集中仅显示最新的行。

如果性能是一个问题,那么您需要在(cod_tanatosala, hora_fin_utc)上建立索引。

这是您的查询:

这是查询:

SELECT r.cod_reserva, MAX(r.cod_tanatosala) FROM reservas_tanatosalas r
GROUP BY r.cod_tanatosala
HAVING MAX(r.hora_fin_utc)

这句话的意思是:

  • cod_tanatosala 的每个值生成一行
  • 返回cod_tanatosala的最大值
  • 此处出现错误:不知道如何处理 cod_reserva。它不是聚合函数或 GROUP BY 中的参数。

HAVING 只是说明 MAX(r.hora_fin_utc) 既不是 0 也不是 NULL。不是很有用。

关于Mysql - 分组并选择最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196803/

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