私は現在 1 対 1 のオンライン ゲームに取り組んでおり、プレイヤーをマッチングしようとしたときに問題が発生しました。
プレイしたいプレイヤーがマッチメイキング テーブルに入れられる
ID、ユーザー、金額
ここで、可能な限り最高のユーザー ペア (つまり、同じ金額でプレイしたいユーザー) のテーブル マッチメイキングを照会したいと考えています。
これまでのところ、次のクエリがあります。
SELECT *
FROM matchmaking a, wpr_matchmaking b
WHERE a.user != b.user
AND a.amount = b.amount
ORDER BY a.id ASC , b.id ASC
LIMIT 0 , 30
これにより、考えられるすべての組み合わせが返されるため、次の内容のテーブルで:
id, user, amount
1, 1, 10
2, 2, 10
3, 3, 10
私はペアを取得します:
1,2
1,3
2,1
2,3
3,1
3,2
その場合、私は 1,2 だけを返したいと思っています。
各ユーザーを最大 1 回だけ表示するにはどうすればよいですか?
編集: 条件 ' and a.id < b.id ' をクエリに追加すると、ペアリングが 2 分の 1 に減少しますが、それでも多すぎます。