この答えは私のコメントと一致します-
1 レコードを検索 (簡単)
SELECT tmp1.rid AS rid
FROM mybb_reputation AS tmp1
WHERE tmp1.reputation = 3;
任意の 2 つのレコードを検索します (関係の順序は回答に関係しないため、< を使用します)
SELECT CONCAT_WS(',',tmp1.rid, tmp2.rid) AS rid
FROM mybb_reputation AS tmp1
JOIN mybb_reputation AS tmp2
ON tmp1.rid < tmp2.rid
WHERE tmp1.reputation + tmp2.reputation = 3
任意の 3 つのレコードを検索します (< に関しては前と同じ考え方)
SELECT CONCAT_WS(',',tmp1.rid, tmp2.rid, tmp3.rid) AS rid
FROM mybb_reputation AS tmp1
JOIN mybb_reputation AS tmp2
ON tmp1.rid < tmp2.rid
JOIN mybb_reputation AS tmp3
ON tmp2.rid < tmp3.rid
WHERE tmp1.reputation + tmp2.reputation + tmp3.reputation = 3
4 を見つけます (アルゴリズムはただ繰り返されます)
SELECT CONCAT_WS(',',tmp1.rid, tmp2.rid, tmp3.rid, tmp4.rid) AS rid
FROM mybb_reputation AS tmp1
JOIN mybb_reputation AS tmp2
ON tmp1.rid < tmp2.rid
JOIN mybb_reputation AS tmp3
ON tmp2.rid < tmp3.rid
JOIN mybb_reputation AS tmp4
ON tmp3.rid < tmp4.rid
WHERE tmp1.reputation + tmp2.reputation + tmp3.reputation + tmp4.reputation = 3
必要な組み合わせの数だけ、これを続ける必要があります。