MYSQL查询返回最近一次输入,无论输入日期如何
问题描述:
我真的很糟糕的解释,但我会尝试。假设我有以下表格:MYSQL查询返回最近一次输入,无论输入日期如何
CREATE TABLE inventory (
Store VARCHAR(16),
Product_Code INT UNSIGNED,
Inventory_Qty INT UNSIGNED,
`Date` DATE
);
CREATE TABLE Alias (
computername VARCHAR(16),
storename VARCHAR(32),
);
我想创建一个MYSQL查询,该查询返回基于表中最后一项的数据。基于日期,我使用MAX函数做得很好,但我需要更高级的方法来查找特定产品输入的最后一个项目,并返回最后一个数量,即使它不是相同的日期。这是数据的一个示例中,我想作为结果:
Store| Product| Qty| Date S1 | 1115 | 10 | 12/30/09 S2 | 1115 | 20 | 12/30/09 S3 | 1115 | 5 | 12/29/09 S4 | 1115 | 15 | 12/28/09
查询我已经是这一个,但它只返回S1和S2,因为我上的日期最大,但我想回到最所有商店X系列产品的最新条目:
Select
alias.storename,
inventory.Product_Code,
inventory.Inventory_Qty,
inventory.Date
From inventory
Inner Join Alias On inventory.Store = Alias.computername
Where inventory.Date = (Select Max(inventory.Date) From inventory)
Order By Alias.storename, inventory.Product_Code
如果你想在最近的记录输入到表中每个商店任何帮助,非常感谢
答
看一看
SELECT i.*
FROM (
SELECT Store,
Product,
MAX(Date) MaxDate
FROM inventory
GROUP BY Store,
Product
) MaxDates INNER JOIN
inventory i ON MaxDates.Store = i.Store
AND MaxDates.Product = i.Store
AND MaxDates.MaxDate = i.Date
这将首先得到最大日期每商店每项目,然后返回该记录,这就是它的最后条目。
如果我误解了您的请求,请告诉我。
+0
这完全是我所需要的。非常感谢!! – chupeman 2009-12-31 07:42:18
答
,然后
Select a.storename,
i.Product_Code, i.Inventory_Qty, i.Date
From Alias a
left Join inventory i
On i.Store = a.computername
and i.Date =
(Select Max(Date)
From inventory
Where Store = i.Store)
Order By a.storename, i.Product_Code
答
我相信这会得到你想要的东西:
SELECT
alias.storename,
inventory.Product_Code,
inventory.Inventory_Qty,
lastdate.date
FROM (
SELECT
store,
max(date) as date
FROM inventory
GROUP BY store
) lastdate
INNER JOIN inventory
ON inventory.store = lastdate.story
AND inventory.date = lastdate.date
INNER JOIN alias
ON inventory.store = alias.computername
ORDER BY
alias.storename,
inventory.Product_Code
这将让每个店上是商店出售的任何项目的最后日期出售的所有项目。
对于任何人的帮助,你需要指出哪些答案看起来很接近,以及他们如何进一步帮助你。 – 2009-12-30 18:20:49