gpt4 book ai didi

mysql - 我怎样才能只得到已经被取代3次的产品?

转载 作者:行者123 更新时间:2023-11-29 09:32:05 25 4
gpt4 key购买 nike

我在弄清楚如何编写一个查询时遇到了麻烦,该查询只会返回已被恰好取代 3 次的产品的行。

我添加了 V1、V2、V3 文本位来帮助解释问题,因此我不能只执行“包含”V3,因为它不存在。

这是我的数据表:

+-----------+--------------+--------------+
| ProductId | SupersededBy | Name |
+-----------+--------------+--------------+
| 123456 | 789012 | Car Wheel V1 |
| 789012 | 345678 | Car Wheel V2 |
| 345678 | null | Car Wheel V3 |
| 901234 | 112233 | Brake Pad V1 |
| 567890 | 778899 | Mirror V1 |
| 112233 | null | Brake Pad V2 |
| 445566 | null | Mirror V3 |
| 778899 | 445566 | Mirror V2 |
| 113366 | 224477 | Motor V1 |
| 224477 | 335588 | Motor V2 |
| 335588 | 990011 | Motor V3 |
| 990011 | null | Motor V4 |
+-----------+--------------+--------------+

预期输出:

+-----------+--------------+--------------+
| ProductId | SupersededBy | Name |
+-----------+--------------+--------------+
| 345678 | null | Car Wheel V3 |
| 445566 | null | Mirror V3 |
+-----------+--------------+--------------+

最佳答案

您可以通过使用 join 精确跟踪链两次(以获得三个产品)来实现此目的:

select t.ProductId, t2.ProductId, t3.ProductId
from t t1.join
t t2
on t2.SupersededBy = t1.ProductId join
t t3
on t3.SupersededBy = t2.ProductId
where t3.SupersededBy is null and
not exists (select 1
from t t2
where t2.SupersededBy = t1.ProductId
);

不存在是为了确保您从第一个产品开始。

关于mysql - 我怎样才能只得到已经被取代3次的产品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58484487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com