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
无济于事。
答案 0 :(得分:1)
您可以按玩家分组:
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
表中。
如果superadmins只占所有玩家的一小部分,那么第一个版本可能会更有效率,因为这会限制联接的大小。