PostgreSQL:选择第一行作为select里面的列

时间:2013-01-12 14:22:42

标签: postgresql

我在表格Customers中收到了OrdersCustomers等2个表格,我在表格id中找到了nameOrders列得到了列idcustomer_idorder_date

现在我需要制作一个选项,将每个客户的idname和最后一个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中进行选择的最佳方法?

先谢谢。

1 个答案:

答案 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