这不是查询的唯一问题-您还引用了
customer_id
您没有选择的
orders
。一旦解决了这个问题并将子查询移动到
CTE
,它将起作用:
with o as (
SELECT
id,
customer_id,
order_date
FROM orders
ORDER BY order_date DESC)
SELECT
customers.id,
customers.name,
o.order_date
FROM customers,
o
WHERE o.id = (
SELECT id
FROM o
WHERE o.customer_id = customers.id
LIMIT 1)
ORDER BY customer_id;
Demo
EDIT:
当我加入这些表时,我只想加入基于日期的订单表中的第一个匹配项(最近的一个)
MAX()
将足以获得客户及其最近的订单日期。
SELECT
c.id,
c.name,
max(o.order_date) as most_recent_order_date
FROM customers c
left join orders o
on o.customer_id=c.id
group by c.id, c.name
ORDER BY c.id;