Abzeichen für das Haben bestimmter anderer Abzeichen

Ich arbeite an einer SQL-Abfrage für Abzeichen, die Benutzern ein Abzeichen vergibt, wenn sie alle Abzeichen aus einer angegebenen Liste besitzen (z. B. die IDs 3, 4 und 5).

Ich weiß, dass diese Abzeichen-Abfrage für ein einzelnes Abzeichen funktioniert:

SELECT user_id, count(id), current_timestamp as granted_at
FROM user_badges
WHERE badge_id = 4
GROUP BY user_id

Wie würde ich dies jedoch auf mehrere Abzeichen-IDs anwenden? Das Hinzufügen eines weiteren badge_id = X funktioniert nicht, da dies nur nach einem Abzeichen sucht. Intersect scheint eine Lösung zu sein, wird aber nicht unterstützt. Diese Abfrage wird täglich ausgeführt und betrifft keine Beiträge.

Danke!

Ich verwende etwas Ähnliches, um ein alternatives Benutzerlevel für meine Mitglieder zu erstellen.
Sie können ib.badge_id durch die Badge-ID ersetzen, die Ihre Mitglieder erreicht haben sollten.

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
)

Vielen Dank für deine Hilfe, das funktioniert perfekt!