SELECT player.*, player_iplog.*
FROM player
LEFT JOIN player_iplog ON player.SteamID=player_iplog.SteamID
WHERE player.Rank = 'superadmin'
我在 PHP 脚本中有上述查询,该脚本显示来自 MySQL 数据库的玩家统计信息。一切正常,但是,有些玩家有重复的条目
我无法删除重复的条目,因为它是一项功能而不是错误。
有什么方法可以修改此查询以仅返回每个用户一次?
我将它与 while ( $res->fetch-array() ) {}
循环连接起来,因此它会多次显示每个用户的输入。
另外,我试过 DISTINCT
也没有用。
您可以按玩家分组:
SELECT player.*, player_iplog.*
FROM player
LEFT JOIN player_iplog ON player.SteamID=player_iplog.SteamID
WHERE player.Rank = 'superadmin'
GROUP BY player.SteamID
或者您可以使用子查询:
SELECT player.*, player_iplog.*
FROM player
LEFT JOIN (SELECT *
FROM player_iplog
GROUP BY SteamID) AS player_iplog
ON player.SteamID = player_iplog.SteamID
WHERE player.Rank = 'superadmin'
这假设重复项仅在 player_iplog
表中,而不在 player
表中。
如果 super 管理员只占所有玩家的一小部分,第一个版本可能会更有效率,因为这会限制加入的规模。