gpt4 book ai didi

sql - t-sql 至少一个共同的记录条件

转载 作者:行者123 更新时间:2023-12-01 09:54:56 25 4
gpt4 key购买 nike

我有 2 个表 RegionsRegionNodes 并试图找出正确的 t-sql 查询。

区域:

Id| Name
--+---------------
-1| Global
0 | North America
1 | South America
2 | Asia
3 | Pacific
4 | Africa

另一个表RegionNodes

Id | NodeId | RegionId
---+--------+---------
1 | 1 | -1
2 | 1 | 0
3 | 2 | -1
4 | 2 | 1
5 | 3 | -1
6 | 3 | 2
7 | 4 | -1
8 | 5 | -1

RegionNodes中,所有记录必须有一个记录RegionId = -1和一个或多个其他区域。目标是,节点应该具有全局和另一个区域。因此,从上面的 RegionNodes 表 ID 1、2、3、4、5、6 是正确的,但 7 和 8 不是;因为他们只有全局区域,没有任何其他区域。

我如何才能找到只有全局区域而没有任何其他区域的条目,以便我可以清理数据并设置条件进行检查?请帮忙。非常感谢专家的帮助。

最佳答案

在您的情况下,最简单的方法可能就是查找出现一次的节点:

select NodeId
from RegionNodes rn
group by NodeId
having count(*) < 2;

您可以使用更精炼的 having 子句更加精确:

select NodeId
from RegionNodes rn
group by NodeId
having sum(case when RegionId = -1 then 1 else 0 end) <> 1 or
sum(case when RegionId <> -1 then 1 else 0 end) = 0;

这将返回不具有一个全局区域和一个非全局区域的节点。

关于sql - t-sql 至少一个共同的记录条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202736/

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