仅按

时间:2016-02-04 18:45:57

标签: mysql sql

我有一个表库存活动,其中我有多个记录附加了单个item_id。 note item_id在库存活动表中扮演外键角色。所以实际上我正在跟踪库存的项目(进出)。现在我想检索存储在表中的最后一个记录活动。我写了一个查询,它应该从表中返回最后一条记录,但它返回第一条记录..

列是: activity_id pk item_id fk 平衡int(11)

这是我的问题:

SELECT DISTINCT(item_id),balance
FROM `stock_activity` 
GROUP BY (item_id)
ORDER BY(activity_id) DESC

2 个答案:

答案 0 :(得分:1)

请记住,如果没有任何类型的聚合,则引用不属于分组键的列,因此无法使用此类语句。 所以请记住一个小公式来解决我们这个问题。

SELECT * FROM 
    (
     SELECT * FROM `table`
     ORDER BY AnotherColumn
    ) t1
    GROUP BY SomeColumn
    ;

像这样修改你的查询,希望它能正常工作!!!。

SELECT * FROM(
SELECT DISTINCT(item_id),balance
FROM `stock_activity` 

ORDER BY(activity_id) DESC
) t1
GROUP BY (item_id)

答案 1 :(得分:0)

这是人们遇到问题的常见问题。你想要一个列的GROUPWISE MAXIMUM(或MINIMUM)。幸运的是,这样的例子存在于tutorial section of the manual