我有饭店所以我有一个“菜单”表和一个“订单”表。我想找到最近点的菜。所以我知道我必须在某个时候使用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/

10-09 20:59