拥有某些其他徽章的徽章

我正在编写一个 SQL 徽章查询,用于当用户拥有指定列表中的所有徽章时授予其徽章(例如 ID 为 3、4 和 5 的徽章)。

我知道以下查询适用于单个徽章:

SELECT user_id, count(id), current_timestamp AS 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
)

感谢您的帮助,这完全可行!