我有饭店所以我有一个“菜单”表和一个“订单”表。我想找到最近点的菜。所以我知道我必须在某个时候使用group by dishId,但是我尝试的所有操作都会返回错误。以下查询有效,但返回重复项。我只想要每个菜的最新实例。请注意,我的“订单”表包含我目前不感兴趣的客户信息。
select o.timestamp, m.*
from orders o
inner join menu m
on (o.dishId = m.dishId);
最佳答案
我认为您在这里遇到的问题是,您需要包括要分组的每个列
select m.dishId, MAX(o.timestamp)
from orders o
inner join menu m
on (o.dishId = m.dishId)
group by m.dishId;
如果要按更多列分组,则必须在两个地方都添加它们。例:
select m.dishId, m.dishName, MAX(o.timestamp)
from orders o
inner join menu m
on (o.dishId = m.dishId)
group by m.dishId, m.dishName;
关于mysql - 使用内部联接和分组依据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8086248/