我有一个表库存活动,其中我有多个记录附加了单个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
答案 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
中