使用内部联接和分组依据

时间:2011-11-10 21:02:54

标签: mysql group-by inner-join

我有一家餐馆。所以我有一个“菜单”表和一个“订单”表。我想找到最近订购的特定菜肴的时间。所以我知道我必须在某些时候使用group by dishId,但我尝试的所有内容都会返回错误。以下查询有效,但它返回重复项。我只想要每道菜的最新实例。请注意,我的“订单”表包含我目前不感兴趣的客户信息。

select o.timestamp, m.* 
from orders o 
inner join menu m 
on (o.dishId = m.dishId); 

1 个答案:

答案 0 :(得分:0)

我认为你在这里遇到的问题是你需要包括你想要分组的每一列

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;