제 SQL이 점검이 필요할 수도 있습니다
, 하지만 이 줄을 배지 쿼리에 추가하면 자신 자신을 초대하는 사람들에게 배지가 부여되지 않도록 할 수 있다고 생각합니다 - AND i.invited_by_id <> u2.id
즉, 다음과 같은 형태가 될 것입니다:
SELECT u.id user_id, current_timestamp granted_at
FROM users u
WHERE u.id IN (
SELECT invited_by_id
FROM invites i
JOIN invited_users iu ON iu.invite_id = i.id
JOIN users u2 ON u2.id = iu.user_id
WHERE i.deleted_at IS NULL
AND i.invited_by_id <> u2.id
AND u2.active
AND u2.trust_level >= 0
AND u2.silenced_till IS NULL
GROUP BY invited_by_id
HAVING COUNT(*) >= 1
) AND u.active AND u.silenced_till IS NULL AND u.id > 0 AND
(:backfill OR u.id IN (:user_ids) )