Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于在其他相应列中保留多个值返回值的SQL查询_Sql_Sql Server - Fatal编程技术网

基于在其他相应列中保留多个值返回值的SQL查询

基于在其他相应列中保留多个值返回值的SQL查询,sql,sql-server,Sql,Sql Server,在下表中,我尝试运行一个查询,该查询返回一个GroupId,该GroupId具有多个相应的nodeid。例如,如果我有nodeIDs595644659,那么groupid2将被返回,而不是3,因为思想3对应于644和595但不是659。我不知道我需要做些什么加入吗? 我不太确定如何最好地表达标题,谢谢你的帮助 GroupSchema_Id GroupId ISchemeID NodeId 1 2 NULL 595 2

在下表中,我尝试运行一个查询,该查询返回一个GroupId,该GroupId具有多个相应的
nodeid
。例如,如果我有
nodeIDs
595644659,那么
groupid2
将被返回,而不是3,因为思想3对应于
644
595
不是659
。我不知道我需要做些什么加入吗? 我不太确定如何最好地表达标题,谢谢你的帮助

GroupSchema_Id  GroupId ISchemeID   NodeId
1                     2 NULL            595
2                     2 NULL            644
3                     2 NULL            659
4                     2 NULL            662
5                     2 NULL            592
6                     2 NULL            626
7                     2 NULL            595
8                     3 NULL            644
9                     3 NULL            595

您不需要
加入
。您可以使用
分组方式
执行您想要的操作:

select groupId
from t
where nodeId in (595, 644, 659)
group by groupId
having count(distinct nodeId) = 3;

您不需要
加入
。您可以使用
分组方式
执行您想要的操作:

select groupId
from t
where nodeId in (595, 644, 659)
group by groupId
having count(distinct nodeId) = 3;

取决于节点ID对于每个组是否唯一

SELECT GroupId 
FROM YourTable
GROUP BY GroupID
HAVING SUM (CASE WHEN NodeID IN (595,644,659) 
                      THEN 1
                 ELSE 0
            END) = 3

取决于节点ID对于每个组是否唯一

SELECT GroupId 
FROM YourTable
GROUP BY GroupID
HAVING SUM (CASE WHEN NodeID IN (595,644,659) 
                      THEN 1
                 ELSE 0
            END) = 3

由于节点似乎可以在一个组中出现两次(第2组中为595个),我怀疑您应该使用
count(distinct nodeId)
而不仅仅是
count(*)
@shawnt00您是对的,我更新了,首先快速检查了一下,没有看到任何重复项。@JuanCarlosOropeza。谢谢。由于节点可以在一个组中出现两次(第2组中为595个),我怀疑您应该使用
count(distinct nodeId)
而不仅仅是
count(*)
@shawnt00您是对的,我更新了,我首先快速检查了一下,没有看到任何重复项。@JuanCarlosOropeza。非常感谢。