0

私は現在 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 に減少しますが、それでも多すぎます。

4

1 に答える 1

-1

最高のペアをそれらに一致させてから、クエリを再実行しますか? あなたが使用することができますSELECT TOP 1

于 2016-06-03T15:29:47.670 に答える