GetIndirectInvites_procedure.md 709 Bytes
Newer Older
Ford committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
```sql
DELIMITER //
CREATE PROCEDURE GetIndirectInvites(IN InputInviterID INT)
BEGIN
    WITH RECURSIVE indirect_invites AS (
        SELECT inviter_id, invitee_id
        FROM user_invitation_relationship
        WHERE inviter_id = InputInviterID
        UNION ALL
        SELECT ir.inviter_id, ir.invitee_id
        FROM user_invitation_relationship ir
        INNER JOIN indirect_invites ii ON ii.invitee_id = ir.inviter_id
    )
    SELECT DISTINCT invitee_id
    FROM indirect_invites
    WHERE invitee_id NOT IN (
        SELECT invitee_id
        FROM user_invitation_relationship
        WHERE inviter_id = InputInviterID
    );
END //
DELIMITER ;
-- 调用存储过程
call GetIndirectInvites(1)
```