如何查找导致循环的所有记录

时间:2015-09-23 16:45:07

标签: sql sql-server

我正在编写一个查询,为while循环中的每个项目分配级别代码。我有需要清理数据问题的表。表中的一些记录如下所示:

 Product          Ingredient
   XX                 YY
   YY                 XX

   YY                 ZZ
   ZZ                 XX

我应该如何使用查询来查找可能导致循环的所有对。感谢。

正如@JuanCarlosOropeza所说。可能有XX-> YY - > ZZ - > XX也发生了。

2 个答案:

答案 0 :(得分:0)

听起来你需要递归公用表表达式或CTE。这应该让你开始:https://msdn.microsoft.com/en-us/library/ms186243.aspx

我会稍后尝试发布一个代码示例,以备不时之需。

答案 1 :(得分:0)

实际上很简单

 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

这匹配递归产品(在手机上输入)