我目前正在开发一款 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 倍,但仍然太多。