如何解决SQL-提取给定列的最新1条记录
我有以下查询,可以很好地获取有关厨师,菜单和所售食品的信息。
但是,它缺少最后一列“ last_order_placed”
此列需要从表“ orders”中提取单个最新(最新)条目,列名为“ placed”。每个特定的商店(store.id)都会在每次食品销售时放置的订单中具有价值。
这是一个Postgresql 13数据库。
我想添加一列以包括来自orders.placed的每个商店的最新条目(store.id):
select distinct
account.id,account.email,account.firstname,account.lastname,account.phone,account.zip_code,menu.name,kitchen_item.name,kitchen_item.price,kitchen_item.daily_max_orders,menu.pickup_start_time,menu.pickup_end_time,menu.repeat_mon,menu.repeat_tues,menu.repeat_wed,menu.repeat_thurs,menu.repeat_fri,menu.repeat_sat,menu.repeat_sun,from account
left join store on account.id = store.account_id
left join menu on store.id = menu.store_id
left join kitchen_item on store.id = kitchen_item.store_id
left join menu_item on (kitchen_item.id = menu_item.kitchen_item_id and menu.id = menu_item.menu_id)
left join orders on store.id = orders.store_id
where account.is_seller_fully_registered = True
and account.is_deleted = False
and menu.deleted = False
and menu_item.is_deleted = False
group by account.id,menu.repeat_sun
order by account.id asc;
我不知道如何将其与所有其他联接合并。我尝试了其他帖子中的建议,并且根据我的收集,我应该在orders表的联接上实现此建议。 像这样:
INNER JOIN (
select MAX (orders.placed) last_order
from orders o on orders.store_id = store.id
)
GROUP BY store.id
有人可以帮我吗?
解决方法
如果我理解正确,则可以使用distinct on
:
select distinct on (store_id) . . .
. . .
order by store_id,o.placed desc
您可能不需要group by
。至少,您的问题没有解释为什么有必要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。