mysql SQL查询以获取多个产品迁移条目的最新产品

r55awzrz  于 2023-02-07  发布在  Mysql
关注(0)|答案(1)|浏览(127)

下表存储产品迁移数据。例如,PROD 1已迁移到PROD 2。我需要帮助来构建最佳SQL查询,该查询将返回产品的最新版本。例如,如果输入为PROD 1,则输出为PROD 5。同样,如果输入为PROD 3,则输出为PROD 5。
| 产品来源|产品至|
| - ------|- ------|
| 产品1|产品2|
| 产品2|产品3|
| 产品3|产品4|
| 产品4|产品5|

3qpi33ja

3qpi33ja1#

使用WITH RECURSIVE可以解决您的问题如下:
只需将您要检查的产品放在第一个选择WHERE Product_from = 'PROD1'

WITH RECURSIVE products_paths (n, Product_from, Product_to, path) AS
(
  SELECT 1, Product_from, Product_to, CAST(CONCAT(Product_from, ',', Product_to) AS CHAR(400))
    FROM products
    WHERE Product_from = 'PROD1'
  UNION ALL
  SELECT n+1, p.Product_from, p.Product_to, CONCAT(pp.path, ',', p.Product_to)
    FROM products_paths AS pp 
    JOIN products AS p ON pp.Product_to = p.Product_from
)
SELECT SUBSTRING_INDEX(path,',',1) as input, SUBSTRING_INDEX(path,',',-1) as Output
FROM products_paths 
ORDER BY n desc
limit 1;

文件
Demo here

相关问题