Sql 如何查找导致循环的所有记录
我正在编写一个查询,为while循环中的每个项分配级别代码。我有数据问题的表格需要清理。表中的一些记录如下所示:Sql 如何查找导致循环的所有记录,sql,sql-server,Sql,Sql Server,我正在编写一个查询,为while循环中的每个项分配级别代码。我有数据问题的表格需要清理。表中的一些记录如下所示: Product Ingredient XX YY YY XX YY ZZ ZZ XX 我应该如何使用查询来查找可能导致循环的所有对。谢谢 正如@JuanCarlosOropeza所提到的。也可能发生XX->YY
Product Ingredient
XX YY
YY XX
YY ZZ
ZZ XX
我应该如何使用查询来查找可能导致循环的所有对。谢谢
正如@JuanCarlosOropeza所提到的。也可能发生XX->YY->ZZ->XX 听起来您需要一个递归公共表表达式或CTE。这应该让您开始:
如果您需要的话,我稍后会尝试发布一个代码示例。它实际上非常简单
select * from product p1
inner join product p2 on p1.prod = p2.ingredient
inner join p3 on p3.prod = p2.prod and p1.ingredient = p3. Ingredient
这与递归产品(在电话上键入)匹配。递归成分只有一级深度吗?或者
XX->YY->ZZ->XX
会发生吗?@JuanCarlosOropeza实际上XX->YY->ZZ->XX也可能发生,谢谢。你能更新你的示例以包括该案例和类似AA->BB->AA
的案例吗?还包括你的愿望输出是什么?你可能不能同时拥有YY->XX
和YY->ZZ
?请阅读并尝试更努力地解释你的问题。