基于mySql中相关表总数的排序
我有很多棒球运动员。他们参加了许多棒球比赛。我希望找到洋基队的球员,并根据他们的命中率排序。它们位于MySqlDatabase中 以下是基本结构:基于mySql中相关表总数的排序,mysql,Mysql,我有很多棒球运动员。他们参加了许多棒球比赛。我希望找到洋基队的球员,并根据他们的命中率排序。它们位于MySqlDatabase中 以下是基本结构: [Players] ID Name Team 1 Jim Yankees 2 Bob Yankees 3 Ted Red Socks 4 Hal Yankees 5 Tom Dodgers [Games] I
[Players]
ID Name Team
1 Jim Yankees
2 Bob Yankees
3 Ted Red Socks
4 Hal Yankees
5 Tom Dodgers
[Games]
ID Player_Id Hits
1 1 2
2 2 0
3 3 3
4 4 1
5 5 2
6 1 0
7 2 0
8 3 1
9 4 4
10 5 1
11 1 0
12 2 0
13 3 1
14 4 3
15 5 1
我在寻找结果
Hal 8
Jim 2
Bob 0
<什么是查询? 这是我认为更好的解决方案:
SELECT playerName ,totalHits
FROM players p
INNER JOIN
(
SELECT player_ID,SUM(Hits) as totalHits
FROM games
GROUP BY player_ID
) as g
ON p.ID=g.player_ID
WHERE p.team='Yankees'
ORDER BY totalHits desc
SELECT p.Name, sum(Hits) as TotalHits
FROM Players p LEFT OUTER JOIN
Games g
on p.id = g.player_id
WHERE p.Team = 'Yankees'
GROUP BY p.id
ORDER BY TotalHits DESC;
<> P> >我认为什么更好?
- 在MySQL中,子查询是具体化的。这会导致不必要的开销
- 通过不使用物化视图,MySQL有更好的机会为连接使用索引
- 使用
保证所有洋基球员都会被包括在内,即使那些不在左外联
表中的球员也会被包括在内游戏
这里是我认为更好的解决方案:
SELECT p.Name, sum(Hits) as TotalHits
FROM Players p LEFT OUTER JOIN
Games g
on p.id = g.player_id
WHERE p.Team = 'Yankees'
GROUP BY p.id
ORDER BY TotalHits DESC;
<> P> >我认为什么更好?
- 在MySQL中,子查询是具体化的。这会导致不必要的开销
- 通过不使用物化视图,MySQL有更好的机会为连接使用索引
- 使用
保证所有洋基球员都会被包括在内,即使那些不在左外联
表中的球员也会被包括在内游戏
这里是我认为更好的解决方案:
SELECT p.Name, sum(Hits) as TotalHits
FROM Players p LEFT OUTER JOIN
Games g
on p.id = g.player_id
WHERE p.Team = 'Yankees'
GROUP BY p.id
ORDER BY TotalHits DESC;
<> P> >我认为什么更好?
- 在MySQL中,子查询是具体化的。这会导致不必要的开销
- 通过不使用物化视图,MySQL有更好的机会为连接使用索引
- 使用
保证所有洋基球员都会被包括在内,即使那些不在左外联
表中的球员也会被包括在内游戏
这里是我认为更好的解决方案:
SELECT p.Name, sum(Hits) as TotalHits
FROM Players p LEFT OUTER JOIN
Games g
on p.id = g.player_id
WHERE p.Team = 'Yankees'
GROUP BY p.id
ORDER BY TotalHits DESC;
<> P> >我认为什么更好?
- 在MySQL中,子查询是具体化的。这会导致不必要的开销
- 通过不使用物化视图,MySQL有更好的机会为连接使用索引
- 使用
保证所有洋基球员都会被包括在内,即使那些不在左外联
表中的球员也会被包括在内游戏