我有表列一(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;
但是,您不会将其称为“排列”。