【问题标题】:MYSQL Query with most recent resultsMYSQL 查询最新结果
【发布时间】:2014-08-22 13:25:04
【问题描述】:

我想为 MYSQL 创建一个查询语句,它将为我提供一件物品的最新价格。一个表包含一堆价格 (UnitPrice) 与每个项目 (MIL_id)) 配对。但是,我想要每个项目 (MIL_id) 的最新价格 (UnitPrice)。每一行还有一个 @987654325 @ 列为每个条目递增,Date 列为每个条目增加。那么我怎样才能进行查询,以提供最新的价格(UnitPrice)和最新的DateReqNum

到目前为止我所拥有的:

SELECT t1.VendorPtNum, t1.UnitPrice, MAX(t1.Date), MAX(t1.ReqNum), t2.MIL_id
FROM tblMatInvList t2
LEFT JOIN tblPurchaseReq t1 ON t1.VendorPtNum = t2.VendPtNum
GROUP BY t2.MIL_id
HAVING MAX(t1.Date)

【问题讨论】:

  • 是否保证ReqNum 值较高的行比数字较低的行更新?
  • 是的,ReqNum 会随着每个条目而增加。因此,ReqNum 越高,条目越新。

标签: php mysql sql database time-series


【解决方案1】:

在您发表评论后编辑:

所以,你有一张桌子

tblMatInvList

--------------------+

供应商PtNum | MIL_id

--------------------+

还有一张桌子

tblPurchaseReq

---------------------------------------------------+

供应商PtNum |单价 |日期 |请求数

---------------------------------------------------+

我认为你可以使用这样的东西

SELECT * FROM tblMatInvList
INNER JOIN 
      (SELECT MAX(Date) as date,
              VendorPtNum
         FROM tblPurchaseReq
         GROUP BY tblPurchaseReq.VendorPtNum) prices
ON prices.VendorPtNum = tblMatInvList.VendorPtNum;

【讨论】:

  • 抱歉应该指定。表 tblMatInvList 具有以下列:VendPtNum、MIL_id 和 tblPurchaseReq 具有列:VendorPtNum、UnitPrice、Date、ReqNum。几乎你所拥有的,除了相反。但是,就像其他答案一样,这个查询给了我 905 行,而只有 140 个项目(MIL_id),我想要该项目的最新价格。添加“GROUP BY MIL_id”会为我提供与每件商品相关的第一个价格,而不是最新价格。
  • @Nadeemm,请查看这个新答案。
  • GROUP BY tblPurchaseReq.id_prod 不存在。如果 id_prod 是指 MIL_id,则 MIL_id 位于 tblMatInvList 而不是 tblPurchaseReq。
  • 对不起,它是“VendorPtNum”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
相关资源
最近更新 更多