我是一个相对 SQL 爱好者,渴望学习,但我需要一些帮助来组合查询。如果有人能引导我走向正确的方向,我将不胜感激。
该表是团队排名。各列如下:
score | qualities_id | team_id | year | source
根据特定年份的不同素质对团队进行评分。请注意,可以为给定团队分配多个分数(每个分数都来自不同的来源)。同样,特定团队在特定年份可能根本没有任何得分。
问题是这样的:
给定一个质量和一个团队列表,我想找到一个列表,其中每个团队都至少有一个分数。
我是从 Rails (3.1) 开始解决这个问题的,我可以使用 Active Record 和多个数据库调用以一种愚蠢的方式做到这一点。但我希望能够用纯 SQL 来完成。 Active Record 中仅限一次数据库调用的帮助奖励积分。
非常感谢
最佳答案
以下是您有 6 个团队的情况的示例。您在 HAVING 子句中测试的值(在我的示例中为 6)应与 IN 子句中包含的 team_ids 数量相匹配。
SELECT year
FROM TeamRankings
WHERE qualities_id = 1
AND team_id IN (4,8,15,16,23,42)
GROUP BY year
HAVING COUNT(DISTINCT team_id) = 6;
关于sql - 我该如何编写这个该死的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8097358/