我有一张table foo
具有以下结构:
| id | docId | content | parentId |
|----|--------|---------|----------|
| 1 | 19 | ... | NULL |
| 2 | 20 | ... | NULL |
| 3 | 20 | ... | NULL |
| 4 | NULL | ... | 3 |
| 5 | 20 | ... | NULL |
| 6 | NULL | ... | 5 |
| 7 | 21 | ... | NULL |
| 8 | NULL | ... | 7 |
| 9 | NULL | ... | 7 |
我想选择一切与 docId = 20
,或具有与具有 docId = 20
.
我以为我会用左连接到达那里,但运气不好:
SELECT * FROM foo a
LEFT JOIN foo b ON b.id = a.parentId
WHERE a.docId = 20
这将返回 docId = 20
但不是那些 docId = NULL
parentid是docid为20的行。
4条答案
按热度按时间myss37ts1#
我想
回答你关于父母的问题,如果你想要祖父母和其他祖先,你可以考虑递归CTE。
gopyfrb32#
我用子查询而不是联接解决了这个问题:
np8igboo3#
你可以试试工会
ep6jt1vc4#
我认为你的加入规则有错误,
我相信你必须使用
a.id = b.parentId
不是b.id = a.parentId
,例如: