gpt4 book ai didi

mysql - 计算按唯一 ID 分组的表的最小值 - mysql

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

我需要查询方面的帮助。

select *,min(cast(hour(now())- hour_offer) as unsigned))  as time_left 
from out_of_offer
group by offer_id
order by time_left asc

我的 out_of_offer 表中有多个 hour_offer,我只需要获取一条最接近当前小时的记录(按 Offer_id 分组)。

例如

offer_id           hour(now())            hour_offer
1 11 8
2 11 9
1 11 10
2 11 11
2 11 12

我希望查询做的是获取第 3 行和第 4 行,因为它们最接近当前小时 (11) 并且它们具有不同的 Offer_ids。

hour_offer is mediumint(2) unsigned

有人可以帮我怎么做吗?

编辑如果我在 mysql 查询中打印出 hour(now())-hour_offer ,结果是一个巨大的(正)数字。

最佳答案

尝试这样的事情:

SELECT * FROM out_of_offer o,
(SELECT offer_id, MIN(ABS(hour-hour_offer)) AS diff FROM out_of_offer
GROUP BY offer_id) x
WHERE o.offer_id = x.offer_id AND ABS(o.hour-o.hour_offer) = x.diff;

我想最好使用ABS而不是CAST。我不知 Prop 体原因,但您的 CAST 语法是错误的。

您可以将 de hour 更改为 hour(now)。我使用了 hour 来测试 SQLFiddle 上的查询。

关于mysql - 计算按唯一 ID 分组的表的最小值 - mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19047320/

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