gpt4 book ai didi

mysql - 从 A 组中选择缺少值的 B 组数据

转载 作者:行者123 更新时间:2023-11-30 22:13:38 25 4
gpt4 key购买 nike

我需要对数据库中的数据进行分组(或以其他方式选择),这里是该数据库的简化模型:

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;

我把上面查询结果中不需要的数据标为黄色

picture .

最佳答案

我自己找到了解决方案:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com