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;
1条答案
按热度按时间3qpi33ja1#
使用
WITH RECURSIVE
可以解决您的问题如下:只需将您要检查的产品放在第一个选择
WHERE Product_from = 'PROD1'
文件
Demo here