Mysql Group出问题?

时间:2009-10-23 07:37:44

标签: 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_outbalance

例如,产品2(ids 1& 2)完成了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

由于

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分: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中选择字段,而不是更新,这应该全部为空。