SQL-检索不同的ID

时间:2011-06-13 15:53:43

标签: 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数字2和3而不是1。

我该怎么做?

6 个答案:

答案 0 :(得分:2)

Select Id, Name

From #t
Where (Attribute = 'MM' Or Code = 'GC')
And Id Not In (Select Id From #t 
                Where (Attribute = 'MM' And Code = 'GC'))

答案 1 :(得分:1)

select distinct T1.ID,
                T1.NAME
from T as T1
where (T1.ATTRIBUTE = 'MM' or T1.CODE = 'GC') and
      not exists (select *
                  from T as T2
                  where T1.ID = T2.ID and
                        T2.Attribute = 'MM' and
                        T2.CODE = 'GC')

结果:

ID  NAME
2   ZZ
3   AA

答案 2 :(得分:0)

试试这个:

select distinct ID
from TableName
where (Attribute = 'MM' or Code = 'GC')
  and not (Attribute = 'MM' AND Code = 'GC')

答案 3 :(得分:0)

试试这个:

SELECT ID, NAME
  FROM <YOUR-TABLE-NAME>
 WHERE 
 (ATTRIBUTE = 'MM' AND CODE <> 'GC') OR
 (ATTRIBUTE <> 'MM' AND CODE = 'GC') ;

答案 4 :(得分:0)

选择不同的Id,名称 从tbl? 哪里 (attribute ='MM'或code ='GC') 而不是(attribute ='MM'和code ='GC')

答案 5 :(得分:0)

(
    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'
)