我有一个表格,其中显示某个产品何时被其他产品替换,并且该其他产品也可能出现在该表格中。
我想知道如何在给定产品的情况下编写查询,以获得最新的可用(替换)产品。
示例:
Product_From Product_To
-------------------------
A E
A D
B F
C B
D F
D G
如何通过查询获得以下输出:
Product_From Product_Final
-------------------------
A E
A F
A G
B F
C F
D F
D G
产品 A 被产品 D 和 E 替换,但产品 D 被 F 和 G 替换,因此产品 A 将产品 E、F 和 G 作为“最终产品”。
问题是产品可以有不同的替换条目,因此我不知道我需要多少个 JOINS...
最佳答案
您可以使用自左连接来做到这一点:
select
p1.product_from,
coalesce(p2.product_to, p1.product_to) product_final
from products p1 left join products p2
on p2.product_from = p1.product_to
请参阅demo .
结果:
> product_from | product_final
> :----------- | :------------
> A | E
> A | F
> A | G
> B | F
> C | F
> D | F
> D | G
关于sql - 获取每个条目的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55957995/