擅长:python、mysql、java
<p>如果您使用的数据库支持递归公共表表达式(例如PostgreSQL),这正是用例。在</p>
<pre><code>team = StaffMember.objects.raw('''
WITH RECURSIVE team(id, supervisor) AS (
SELECT id, supervisor
FROM staff_member
WHERE id = 42
UNION ALL
SELECT sm.id, sm.supervisor
FROM staff_member AS sm, team AS t
WHERE sm.id = t.supervisor
)
SELECT * FROM team
''')
</code></pre>
<p>参考文献:
<a href="https://docs.djangoproject.com/en/1.10/topics/db/sql/" rel="noreferrer">Raw SQL queries in Django</a><br/>
<a href="https://www.postgresql.org/docs/current/static/queries-with.html" rel="noreferrer">Recursive Common Table Expressions in PostgreSQL</a></p>