多表达式不喜欢sql

多表达式不喜欢sql,sql,sql-server,tsql,Sql,Sql Server,Tsql,基本上我有一张这样的桌子 +--------+----------+ | name | Group | +--------+----------+ | xxxx | 1 | | yyyy | 1 | | xxxx | 2 | | yyyy | 3 | | xxxx | 4 | +--------+----------+ 我不想显示组中名称为xxxx的任何记录。

基本上我有一张这样的桌子

+--------+----------+   
|   name |  Group   |  
+--------+----------+   
|   xxxx |   1      |  
|   yyyy |   1      |  
|   xxxx |   2      |  
|   yyyy |   3      |  
|   xxxx |   4      |  
+--------+----------+
我不想显示组中名称为xxxx的任何记录。

您似乎想要:

select t.*
from table t
where not exists (select 1 from table t1 where t1.group = t.group and t1.name = 'xxxx')

首先需要一个子查询来标识不需要的组。然后您需要从主查询中筛选它

SELECT * FROM Table1 
Where group not in ( select group from Table1 where name != 'xxxx')

到现在为止你都试了些什么?试试这个。从名称“xxxx”的位置选择*编辑问题并添加您想要的结果。所以您只想在组3中显示行?因为GRP 1、2和4都包含以xxxx作为名称的内容?这是一个原始示例。我会避免在()中使用
IN
,而我可以使用
EXISTS()
为什么?它们都有使用区域。我认为这是一个非常广泛的话题,在这里讨论为什么?好的。@Sami“这以前是真的,但在当前版本(至少2008年)中,优化器要聪明得多……它实际上把in()当作EXISTS()”。@NickA,OP尚未指定版本:)您的AWS似乎是正确的,但我遇到了一些问题,因为我使用CTE,我在CTE实现后的查询看起来像这样:选择不同的c.TWG_Kod作为名称,g1.TWG_Kod作为组,k.twr_nazwa,m.MAG_nazwa,来自CTE c的m.MAG_Kod将cdn.TwrGrupy g1与c.TwG_GIDNumer=g1.TwG_GrONumer上的(nolock)连接起来。由于列名重复,我不知道如何在查询中使用它