我正在写一个赛马网络应用程序,我有一个统计页面.我想要做的是显示每年有多少获奖者.
目前我有这个:
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2009`
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力,并返回以下内容
Horse Number | Total Winners
1|48
2|49
3|39
4|31
5|26
6|31
7|21
8|25
9|31
10|16
11|16
12|20
13|9
14|8
15|6
16|3
17|3
18|2
19|2
Run Code Online (Sandbox Code Playgroud)
我现在已经创建了一个2010年的表,我希望SQL返回类似的东西,但我希望它能同时搜索2009年和2010年.我认为这样的事情可能会成功.
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2009`
WHERE `Win $`>0
GROUP BY `Horse Number`
UNION
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2010`
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;
Run Code Online (Sandbox Code Playgroud)
但它只是在表格的底部返回额外的结果,所以我现在每只马有2行像这样
Horse Number | Total Winners
1|48
2|49
3|39
4|31
5|26
6|31
7|21
8|25
9|31
10|16
11|16
12|20
13|9
14|8
15|6
16|3
17|3
18|2
19|2
1|0
2|0
3|0
4|0
5|0
6|0
7|0
8|0
9|0
10|0
11|0
12|0
13|0
14|0
15|0
16|0
17|0
18|0
19|0
Run Code Online (Sandbox Code Playgroud)
有人能帮助我吗?
谢谢
DVK*_*DVK 10
首先,我建议让一张桌子加一列额外的一年.
其次,用当前的表结构,你可以做到
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM (
SELECT * FROM `races`.`2009`
UNION ALL
SELECT * FROM `races`.`2010`
) all_races
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;
Run Code Online (Sandbox Code Playgroud)