我有表列一(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)引用了agin ipdprocess1(15)
请帮忙 我只想在树上发出圆形参考
答案 0 :(得分:1)
如果您乐意找到排在前两列的行,这将完成这项工作:
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
的所有行(在=较小的ID之前),那么您可以:
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;
但你不会称之为“排列”。
答案 1 :(得分:0)
这个问题有点模棱两可,但我试图自己理解它,并准备了以下查询:
SELECT *
FROM TEMP
where C2 IN ( Select C2 FROM TEMP group by C2 having count(C2) > 1 )
OR C3 IN ( Select C3 FROM TEMP group by C3 having count(C3) > 1 )