我有表列一(idprocess)指向列二(idporcess1)并指向列树(idprocess2)。

id    idprocess        idporcess1    idprocess2
1      15                  16          17                  <==  A
2      15                  16          19                  <==  B
3      15                  20          23
4      14                  16          17
6      16                  15          80                  <== C
7      17                  15           49                 <== D
8      23                  16           20                 <== E


我需要一个返回以下内容的SQL查询:c行和D行,因此编号为idprocess(16)和idprocess(17)

因为第c行:idprocess(16)再次引用了ipdprocess1(15)
因为行c:idprocess(17)引用了ipdprocess1(15)

请帮忙
 我只想消除树中的循环引用

最佳答案

如果您很高兴找到在前两列进行了排列的行,则可以完成以下工作:

SELECT *
  FROM my_tbl t
 WHERE EXISTS (SELECT 1 FROM my_tbl t1 WHERE t1.idprocess = t.idprocess1 AND t1.idprocess1 = t.idprocess)
 ORDER BY t.id;




替代解释:
如果要在idprocess1之前(idprocess中列出的所有行,则可以:

SELECT *
  FROM my_tbl t
 WHERE EXISTS (SELECT 1 FROM my_tbl t1 WHERE t1.id < t.id AND t1.idprocess = t.idprocess1)
 ORDER BY t.id;


但是,您不会将其称为“排列”。

09-10 07:53