作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要对数据库中的数据进行分组(或以其他方式选择),这里是该数据库的简化模型:
user: { id: int, name: varchar }
scenario: { id: int, displayname: varchar, userId: int}
costgroup: { id: int, displayname: varchar }
costgroupvalue: { id: int, scenarioId: int, value: float, year: year, costgroupId: int}
有一个 Scenario (Id: 1) CostGroupValues 范围从 2012 到 2018 和一个 Scenario (Id: 2) < em>CostGroupValues 范围从 2016 年到 2018 年。
我需要的是:一个场景(Id:2)的CostGroupValues,但从 2012 年到 2015 年缺少 CostGroupValues其他场景(Id:1)。
这是我已经做过的一个查询示例:
SELECT costgroupvalue.*
FROM costgroup
JOIN costgroupvalue ON costgroup.id = costgroupvalue.costgroupid
JOIN scenario ON scenario.id = costgroupvalue.scenarioid
And scenario.userid = '666'
Group by costgroupvalue.id;
我把上面查询结果中不需要的数据标为黄色
.
最佳答案
我自己找到了解决方案:
SELECT costgroupvalue.*
FROM costgroup
JOIN costgroupvalue ON costgroup.id = costgroupvalue.costgroupid
JOIN scenario ON scenario.id = costgroupvalue.scenarioid
AND scenario.userid = '14'
WHERE (scenario.id = 2 AND costgroupvalue.year between '2016' AND '2018')
Or (scenario.id = 1 AND costgroupvalue.year between '2012' AND '2015')
Group by costgroupvalue.id
Order by costgroupvalue.costgroupid, costgroupvalue.scenarioid, costgroupvalue.year
此查询为我提供了我需要的行:从 2012 年到 2015 年的 ScenarioId = 1 和从 2016 年到 2018 年的 ScenarioId = 2。
关于mysql - 从 A 组中选择缺少值的 B 组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232509/
我是一名优秀的程序员,十分优秀!