我有一个用户表名。
它包含以下字段。
user_id | parent_user_id | name
考虑我的 user_id 是 5,我想获取具有 parent_user_id 5 的用户及其孩子和孩子的孩子等
如何获取特定父母ID的所有孩子?
你不能递归地做到这一点。你可以用LEFT JOIN
s 来做,但你必须选择一个最大深度。
SELECT * FROM users u1
LEFT JOIN users u2 ON u1.user_id = u2.parent_user_id
LEFT JOIN users u3 ON u2.user_id = u3.parent_user_id
WHERE u1.user_id = [SOME_USER_ID]
但正如Mike Brant 建议的那样,您可能会考虑其他替代方案,例如NoSQL。
尝试类似的东西。
SELECT user_id FROM users WHERE parent_user_id = "5" GROUP BY user_id
这将给父 id 的所有孩子是 5