지정된 목록에 있는 모든 배지를 가진 사용자에게 배지를 부여하는 배지 SQL을 작성하고 있습니다. (예: ID 3, 4, 5).
하나의 배지에 대해서는 이 배지 쿼리가 작동한다는 것을 알고 있습니다:
SELECT user_id, count(id) , current_timestamp granted_at
FROM user_badges
WHERE badge_id=4
GROUP BY user_id
하지만 여러 배지 ID에 이 쿼리를 적용하려면 어떻게 해야 할까요? badge_id = X를 하나 더 추가하면 하나의 배지만 검색하므로 작동하지 않습니다. Intersect가 작동할 것 같지만 지원되지 않습니다. 이 쿼리는 매일 실행되며 어떤 게시물도 대상으로 하지 않습니다.
감사합니다!
회원들의 대체 사용자 레벨을 생성하려면 다음과 같은 쿼리를 사용합니다. ib.badge_id를 회원들이 획득해야 하는 배지 ID로 교체할 수 있습니다.
SELECT user_id, CURRENT_TIMESTAMP granted_at, NULL post_id
FROM user_badges pb
WHERE badge_id = 1
AND EXISTS (
SELECT 1 FROM user_badges ib
WHERE pb.user_id = ib.user_id
AND ib.badge_id = 11
)
AND EXISTS (
SELECT 1 FROM user_badges ib
WHERE pb.user_id = ib.user_id
AND ib.badge_id = 124
)
AND EXISTS (
SELECT 1 FROM user_badges ib
WHERE pb.user_id = ib.user_id
AND ib.badge_id = 123
)
AND EXISTS (
SELECT 1 FROM user_badges ib
WHERE pb.user_id = ib.user_id
AND ib.badge_id = 127
)
AND EXISTS (
SELECT 1 FROM user_badges ib
WHERE pb.user_id = ib.user_id
AND ib.badge_id = 5
)