![](/img/trans.png)
[英]C# SQL Select Right Table in a Left Join to only return UNIQUE values, not one instance of each
[英]POSTGRES SQL Left Join return only the largest UID on the right table?
我试图离开外部联接两个表,我的左表包含1行,我的右表包含3行相关的左行。 我只想使用右表中最大的ID数值返回1行。
我不应该使用左联接吗?
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)
其中表计划/ p包含一个ID,该ID是要清点的FK,但还包含列UID,该列UID是指示修订的自动增量列。
从计划表中查找正确的值:
select * from plan order by plan.uid limit 1
这显然不会在查询中起作用,因为它只为连接返回同一行。
假设您的意思是“每个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.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.