mysql 时间戳 max,基于max(时间戳)的Mysql连接

我有一个网络应用程序,让客户定义他们的服务的每日费率.对于任何给定的日期,客户可以输入两个费率,小时费率(rateTypeId = 1)和dailyRate(rateTypeId = 2).这些费率通常是提前分配的,而且经常会发生变化.我需要跟踪所有分配,但只需提取最新分配的费率.

我有两张桌子.第一个表只是定义了我的费率结构,看起来像这样(简化):

表:RateDefinitions

RATECODE ----- RATE

31 ---------------- 5.00

32 ---------------- 6.00

33 ---------------- 7.00

我的第二个表跟踪指定给定日期的费率.可以为给定日期分配多个费率,但我们仅使用基于“进入时间戳”的最新费率.

表:费率

ID --- RATETYPEID --- RATECODE ------ DATE -------- ENTRYTIMESTAMP

1 ---------- 1 --------------- 31 ---------- 20091010 ---------- 1100000000

2 ---------- 2 --------------- 33 ---------- 20091010 ---------- 1100000000

3 ---------- 1 --------------- 32 ---------- 20091010 ---------- 1200000000

现在我很难整理一个查询,该查询将在给定的时间范围内提取所有最新的速率分配.

我试过了:

select r.id, r.rateTypeId, r.rateCode, max(r.entryTimestamp), rd.rate

from rates r

join rateDefinitions rd

on r.rateCode=rd.rateCode

where date=20091010

group by startDate, rateTypeId

但那不是那样做的.我想我需要加入一个subselect语句,但不确定.我的结果应该包含每个日期两行,类似于:

ID --- RATETYPEID --- RATECODE ---------- ENTRYTIMESTAMP ----- RATE

3 ----------- 1 --------------- 32 -------------------- 1200000000 ----------6.00

2 ----------- 2 --------------- 33 -------------------- 1100000000 ----------7.00

谢谢你的任何建议.

解决方法:

这个问题很常见.您需要一个子查询来抛出最大时间戳和ratetypeid(这是分组的基础),然后从这个子查询行的内部联接和其他所有内容中选择其他所有内容.

对于MySQL:

SELECT ratecode, rate, id, ratetypeid, date, entrytimestamp

FROM ratedefinitions,

(SELECT ratetypeid, MAX(entrytimestamp) AS max_timestamp FROM Rates

GROUP BY ratetypeid) AS inner_table

WHERE

inner_table.ratetypeid = ratetypeid

AND innertable.max_timestamp = timestamp

标签:mysql

来源: https://codeday.me/bug/20190705/1386068.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值