我目前正在开发1v1在线游戏,在尝试匹配玩家时遇到了问题。
想玩的玩家会被放入配对表
id,user,amount
现在我想查询表匹配以获得最佳用户对(因此,想要玩相同金额的用户) 我还希望等待较长时间(较小身份证)的用户首先配对。
到目前为止,我有这个问题:
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倍,但仍有太多。
答案 0 :(得分:-1)
您是否只想要最高的一对匹配,然后重新运行查询?您可以使用SELECT TOP 1