方法一:使用MySQL遞迴函數(僅支援MySQL 8.0及以上版本)
如果您使用的MySQL版本是8.0或以上,您可以使用MySQL的遞迴函數來查詢該會員的所有上級代理。以下是一個示例查詢:
WITH RECURSIVE cte (member_id, proxy_id) AS (
SELECT member_id, proxy_id FROM proxies WHERE member_id = {member_id}
UNION ALL
SELECT c.member_id, p.proxy_id FROM cte c JOIN proxies p ON c.proxy_id = p.member_id
)
SELECT * FROM cte;
在此查詢中,我們使用了一個遞迴公共表達式(CTE)來查詢代理關係,這個CTE使用了遞迴的方式來查詢該會員的所有上級代理。
方法二:使用SQL JOIN(適用於所有版本)
如果您的MySQL版本不支援遞迴函數,您可以使用SQL JOIN來查詢該會員的所有上級代理。以下是一個示例查詢:
SELECT p1.member_id AS level_1, p2.member_id AS level_2, p3.member_id AS level_3, ..., pn.member_id AS level_n
FROM proxies p1
LEFT JOIN proxies p2 ON p2.proxy_id = p1.member_id
LEFT JOIN proxies p3 ON p3.proxy_id = p2.member_id
...
LEFT JOIN proxies pn ON pn.proxy_id = p{n-1}.member_id
WHERE p1.member_id = {member_id};
在此查詢中,我們使用了n個LEFT JOIN來查詢該會員的所有上級代理。根據您的代理關係深度,您需要添加相應數量的LEFT JOIN。