我正在写一个赛马网络应用程序,我有一个统计页面。我想做的是显示每年有多少获奖者。
目前我有这个:
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2009`
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;
它就像魅力一样,并返回以下内容
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
我现在已经为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;
但它只是在表格底部返回额外的结果,所以我现在每匹马都有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
有人能帮助我吗
由于
答案 0 :(得分: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;