Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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中的in条件中排除某些结果_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

从sql中的in条件中排除某些结果

从sql中的in条件中排除某些结果,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有两张桌子 Table 1 Id data1 data1 1 'ff' 'ffe' 2 'r' '3' 3 'df' 'er' Table 2 Id WFID data1 data2 1 12 'd' 'e' 1 13 '3' '4f' 1 15 'e' 'dd' 2 12 'f' 'ee' 3 17 'd' 'f' 现在我需要的是连接两个表,并在记录的WFI

我有两张桌子

Table 1
Id data1  data1
1  'ff'   'ffe'
2  'r'    '3'
3  'df'   'er'

Table 2
Id   WFID  data1   data2
1    12    'd'     'e'
1    13    '3'     '4f'
1    15    'e'     'dd'
2    12    'f'     'ee'
3    17    'd'     'f'
现在我需要的是连接两个表,并在记录的WFID为12或17且仅为12或17时获取数据。在本例中,Id号1有12,但它也有13和15,因此它被排除在外。包括Id号2和3,因为它们只有12或17个

我使用了下面的查询,但它也给了我id为1的数据。有人能告诉我我能用什么来解决这个问题吗

select * from Table1
where Exists (select distinct ID from Table2 where 
    Table1.ID = Table2.ID and
    WFID in (12,17))
谢谢

您想要的是不存在和不存在。此外,不需要在EXISTS中引用的子查询中使用DISTINCT。你甚至不需要引用真实的专栏

挑选* 来自dbo.table1t1 如果不存在,则从dbo.Table2 T2中选择1 其中T1.ID=T2.ID WFID不在12,17; 您需要一个NOT EXISTS和一个NOT IN。此外,不需要在EXISTS中引用的子查询中使用DISTINCT。你甚至不需要引用真实的专栏

挑选* 来自dbo.table1t1 如果不存在,则从dbo.Table2 T2中选择1 其中T1.ID=T2.ID WFID不在12,17;
您需要所有ID,其中仅存在值12和17中的任何一个,而不存在其他值

使用条件聚合:


您需要所有ID,其中仅存在值12和17中的任何一个,而不存在其他值

使用条件聚合:

select * from Table1
where ID in  
 (
   select ID 
   from Table2
   group by ID
   having sum(case when WFID in (12,17) then 1 else -1000 end) > 0
 )