我需要选择满足值的最后三个记录,然后计算该子集中另一列的出现次数。
例如:
选择水果名称为橙色的最后三个水果以及商店名称,然后从这些结果中选择商店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子查询'
谢谢。
答案 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;