我在表格Customers
中收到了Orders
和Customers
等2个表格,我在表格id
中找到了name
,Orders
列得到了列id
,customer_id
,order_date
。
现在我需要制作一个选项,将每个客户的id
,name
和最后一个order_date
返回给我。
我试着这样做:
select
Customers.id,
Customers.name,
(select Orders.order_date from Orders where Orders.customer_id = Customer.id order by order_date desc) as last_order_date
from
Customers
但是它得到了错误的索引并且需要永远执行。 什么是在PostgreSQL中进行选择的最佳方法?
先谢谢。
答案 0 :(得分:2)
如果不按customer_id
进行限制,则查询最终必须扫描整个订单表。
SELECT c.id
,c.name
,MAX(o.order_date) AS last_order_date
FROM Customers c
LEFT OUTER JOIN Orders o ON (o.customer_id = c.id)
GROUP BY c.id, c.name