我有一家餐馆。所以我有一个“菜单”表和一个“订单”表。我想找到最近订购的特定菜肴的时间。所以我知道我必须在某些时候使用group by dishId,但我尝试的所有内容都会返回错误。以下查询有效,但它返回重复项。我只想要每道菜的最新实例。请注意,我的“订单”表包含我目前不感兴趣的客户信息。
select o.timestamp, m.*
from orders o
inner join menu m
on (o.dishId = m.dishId);
答案 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;