基于max(时间戳)的Mysql连接
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于max(时间戳)的Mysql连接,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1853字,纯文字阅读大概需要3分钟。
内容图文
![基于max(时间戳)的Mysql连接](/upload/InfoBanner/zyjiaocheng/903/72f74b3272644704a726ad9f765ca493.jpg)
我有一个网络应用程序,让客户定义他们的服务的每日费率.对于任何给定的日期,客户可以输入两个费率,小时费率(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
内容总结
以上是互联网集市为您收集整理的基于max(时间戳)的Mysql连接全部内容,希望文章能够帮你解决基于max(时间戳)的Mysql连接所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。