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 

如果你想在最近的记录输入到表中每个商店任何帮助,非常感谢

+0

对于任何人的帮助,你需要指出哪些答案看起来很接近,以及他们如何进一步帮助你。 – 2009-12-30 18:20:49

看一看

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 

这将让每个店上是商店出售的任何项目的最后日期出售的所有项目。