0

我目前正在开发一款 1v1 在线游戏,在尝试匹配玩家时遇到了问题。

想玩的玩家会被放到配对表中

id、用户、金额

现在我想查询表匹配以找到可能的最佳用户对(因此,想要玩相同数量的用户)我还希望等待更长时间(更小的 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。

如何让它最多只向我显示每个用户一次?

编辑:在查询中添加条件 '和 a.id < b.id ' 将配对减少了 2 倍,但仍然太多。

4

1 回答 1

-1

您是否只想让最高对匹配那些然后重新运行查询?你可以使用SELECT TOP 1

于 2016-06-03T15:29:47.670 回答