我正在尝试左外部连接两个表,我的左表包含1行,我的右表包含3行关联的左行。我只想返回1行,使用右表中最大的ID数值。
我不应该使用左连接吗?
SELECT
(CASE WHEN p.invoice_number is null THEN 'Pending'
WHEN p.sold_date is not null THEN 'Sold'
ELSE 'Completed'
END),
p.invoice_number,
p.released_date
FROM
sales as s
left join inventory as i on (s.id = i.id)
left join plan as p on (i.id = p.id)其中,表plan /p包含一个ID,该ID是库存的FK,但也包含UID列,该列是指示修订版本的自动递增列。
从计划表中查找正确的值:
select * from plan order by plan.uid limit 1这显然不会在查询中起作用,因为它只为连接返回相同的行。
发布于 2019-03-12 03:30:48
假设您的意思是“每个ID的最新UID”,则可以连接到选取最大UID的派生表
SELECT CASE
WHEN p.invoice_number is null THEN 'Pending'
WHEN p.sold_date is not null THEN 'Sold'
ELSE 'Completed'
END,
p.invoice_number,
p.released_date,
p.uid as latest_uid
FROM
sales as s
left join inventory as i on s.id = i.id
left join (
select distinct on (id) id, uid
from plan
order by id, uid desc
) as p on i.id = p.idhttps://stackoverflow.com/questions/55108764
复制相似问题