2009-10-23 50 views
1

有人可以帮助我吗?Mysql组按问题?

这是我的表结构:

 
rec_id product_id quantity quantity_in quantity_out balance stock_date status 

    1  2   342   NULL   17  325 2009-10-23  1 
    2  2   325   NULL   124  201 2009-10-23  1 
    3  1   156   NULL   45  111 2009-10-23  1 
    4  2   201   NULL   200   1 2009-10-23  1 
    5  2   1   NULL   1   0 2009-10-23  1 
    6  1   111   NULL   35   76 2009-10-23  1 

所有我想要的是一个给定的产品进行的最后一笔交易:product_idquantityquantity_out并从该表balance

例如,有2交易,产品2(IDS 1 & 2)来完成:
最终余额为product_id 2为0 - >存储在·REC_ID 5
最终余额为product_id 1是76 - >存储在·REC_ID 6

最终结果/输出应该是这样的:

 
recid productid quantity quantityin quantityout balance stock_date status 
    5   2   1  NULL   1   0  2009-10-23 1 
    6   1  111  NULL   35  76  2009-10-23 1 

由于

+0

请更清楚您的预期结果...将其显示为表格结果 – 2009-10-23 07:45:46

+0

想要通过product_id查看最近的记录组,以便我只获得一个产品记录。 – 2009-10-23 08:09:45

+0

在上面的6条记录中,对于product_id'1',最近的记录是rec_id 5,对于product_id'2',最近的记录是rec_id 6 – 2009-10-23 08:12:01

回答

0

你可以找到像每个产品的最新记录:

select max(rec_id) as MaxRec 
from YourTable 
group by product_id 

使用子查询,你可以为他们的产品获取最新的行:

select * 
from YourTable 
where rec_id in (
    select max(rec_id) as MaxRec 
    from YourTable 
    group by product_id 
) 
0

这里是没有子查询单查询:

SELECT main.* 
FROM YourTable main 
LEFT JOIN YourTable newer 
    ON newer.product_id = main.product_id AND newer.rec_id > main.rec_id 
WHERE newer.rec_id IS NULL; 

不管你想要什么,你都可以调整字段列表 - 确保你选择来自main的字段,而不是new new,它应该全部为null。