2011-09-21 57 views
2

这是一个相当具体的,所以我希望能够快速解决。左连接,如何从右边指定1个结果?

我在每个球队的排行榜中都有一个结果。在我的球队表中,我为每支球队获得了几项结果(每场比赛一项结果以支持球队发展历史)。

我想在排行榜上显示每个团队一次,并将teamID替换为strName。问题是,我的左连接给了我每个球队结果的一个记录;我只想要一个记录。

SELECT * , a.strName AS teamName 
FROM bb_leaderboards l 
LEFT JOIN bb_teams a ON (l.teamID = a.ID) 
WHERE l.season =8 
AND l.division =1 
ORDER BY l.division DESC , points DESC , wins DESC , l.TDdiff DESC 
LIMIT 0 , 30 

我需要怎么做才能得到1:1的输出?

+1

如果它的1:1关系,您的数据必须反映这一点。您无法获得SQL语句来修复您的错误数据。如果有一个l.teamID存在很多a.ID,那么没有这样做的有效方法 –

+0

所以我不能在联接部分将'limit'限制为1个结果?我在strTeam的主要选择上尝试了'group by',但数据并不正确:/ – Chelmet

回答

1

您可以改为SELECT DISTINCT,但您必须缩小选择范围。所以:

SELECT DISTINCT l.*, a.strName AS teamName 
... 

这应该过滤出重复。

+0

感谢您的回答 - 我太新了,无法回复您,对不起。 – Chelmet