MySQL,计算子集结果中出现的次数

时间:2017-01-23 14:43:49

标签: mysql

我需要选择满足值的最后三个记录,然后计算该子集中另一列的出现次数。

例如:

选择水果名称为橙色的最后三个水果以及商店名称,然后从这些结果中选择商店A的数量。

所以如果第一个结果返回了这个:

Orange -- Store A
Orange -- Store B
Orange -- Store A

我需要最终结果为2。

以下是我为我的方案尝试的修改示例

SELECT COUNT(SELECT COUNT(homeTeam) WHERE homeTeam = 'Arsenal') FROM `Project.Game` WHERE homeTeam = 'Arsenal' OR AwayTeam = 'Arsenal' ORDER BY homeTeam DESC limit 3 

我也试过这个:

SELECT COUNT(*) FROM `Project.Games` WHERE homeTeam = 'Arsenal' IN (SELECT * FROM `Project.Games` WHERE homeTeam = 'Arsenal' OR AwayTeam = 'Arsenal' ORDER BY homeTeam DESC LIMIT 3)

但后来我得到了这个错误:#1235 - 这个版本的MySQL还不支持'LIMIT& IN / ALL / ANY / SOME子查询'

谢谢。

2 个答案:

答案 0 :(得分:0)

我有一个类似的体育相关数据库所以这是经过测试的(由于你给我们提供了如此琐事信息,因此编写了列名):SELECT COUNT(*) as 'Home Games' FROM your_table WHERE match_number IN (SELECT match_number FROM your_table homeclub='Arsenal' OR awayclub='Arsenal' ORDER BY match_date DESC LIMIT 3);

答案 1 :(得分:0)

我使用SUM(CASE ......就像条纹一样 - 可能会根据您的需要进行修改:SELECT SUM(CASE(WHEN homeTeam='Arsenal' and match_date>(SELECT match_date FROM your_table WHERE homeTeam='Arsenal' or awayTeam='Arsenal' ORDER BY match_date DESC LIMIT 3)) THEN 1 ELSE 0 END) AS 'Home Games' FROM your_table;