This question already has an answer here:
SQL max() with inner joins
(1个答案)
5年前关闭。
我在一个PHP脚本中有上述查询,该脚本显示来自MySQL数据库的播放器统计信息。一切正常,但是有些玩家有重复的条目
我不能删除重复的条目,因为这是一个特性,而不是一个bug。
是否可以修改此查询以仅返回每个用户一次?
我把这个连接到了一个
而且,我也尝试过
或者可以使用子查询:
这假设重复项只在
如果超级管理员只是所有玩家中的一小部分,那么第一个版本的效率可能会更高,因为这将限制连接的大小。
(1个答案)
5年前关闭。
SELECT player.*, player_iplog.*
FROM player
LEFT JOIN player_iplog ON player.SteamID=player_iplog.SteamID
WHERE player.Rank = 'superadmin'
我在一个PHP脚本中有上述查询,该脚本显示来自MySQL数据库的播放器统计信息。一切正常,但是有些玩家有重复的条目
我不能删除重复的条目,因为这是一个特性,而不是一个bug。
是否可以修改此查询以仅返回每个用户一次?
我把这个连接到了一个
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
表中。如果超级管理员只是所有玩家中的一小部分,那么第一个版本的效率可能会更高,因为这将限制连接的大小。
关于php - 从左联接中删除重复项? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23965041/