Tsql SQL-检索不同的ID

Tsql SQL-检索不同的ID,tsql,Tsql,我有一个包含以下数据的表格: ID NAME ATTRIBUTE CODE ============================= 1 XX MM GC 1 XX ST GC 2 ZZ LL GC 2 ZZ ST GC 3 AA MM PC 我需要ID,从包含MM属性或GC代码(但不是两者

我有一个包含以下数据的表格:

ID   NAME    ATTRIBUTE   CODE
=============================
1     XX         MM        GC
1     XX         ST        GC
2     ZZ         LL        GC
2     ZZ         ST        GC
3     AA         MM        PC
我需要
ID
,从包含
MM
属性或
GC
代码(但不是两者)的表中获取的名称。与此类似,查询应该只检索
ID
数字2和3,而不是1

我该怎么做?

试试这个:

select distinct ID
from TableName
where (Attribute = 'MM' or Code = 'GC')
  and not (Attribute = 'MM' AND Code = 'GC')
SELECT ID, NAME
  FROM <YOUR-TABLE-NAME>
 WHERE 
 (ATTRIBUTE = 'MM' AND CODE <> 'GC') OR
 (ATTRIBUTE <> 'MM' AND CODE = 'GC') ;
试试这个:

select distinct ID
from TableName
where (Attribute = 'MM' or Code = 'GC')
  and not (Attribute = 'MM' AND Code = 'GC')
SELECT ID, NAME
  FROM <YOUR-TABLE-NAME>
 WHERE 
 (ATTRIBUTE = 'MM' AND CODE <> 'GC') OR
 (ATTRIBUTE <> 'MM' AND CODE = 'GC') ;
选择ID、NAME
从…起
哪里
(属性='MM'和代码'GC')或
(属性'MM'和代码='GC');
选择不同的Id、名称 来自tbl? 哪里 (属性='MM'或代码='GC') 而不是(属性='MM'和代码='GC')

结果:

ID  NAME
2   ZZ
3   AA

由于第二行数据,这不会返回1吗?@AakashM:是的,我想你是对的。我没有注意到。我认为@Barry的答案更好。
(
    SELECT ID, NAME FROM TableName WHERE CODE = 'GC'
    EXCEPT
    SELECT ID, NAME FROM TableName WHERE ATTRIBUTE = 'MM'
)
UNION
(
    SELECT ID, NAME FROM TableName WHERE ATTRIBUTE = 'MM'
    EXCEPT
    SELECT ID, NAME FROM TableName WHERE CODE = 'GC'
)